20155336 2016-2017-2 《Java程序设计》第四周学习总结
20155336 2016-2017-2 《Java程序設(shè)計(jì)》第四周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
第六章
- 繼承:面向?qū)ο笾校瑸楸苊舛鄠€(gè)類間重復(fù)定義共同行為。(簡(jiǎn)單說(shuō)就是將相同的程序代碼提升為父類。)
特點(diǎn):
- 這里接觸到了新的關(guān)鍵詞,extends,在java語(yǔ)言中用estends來(lái)繼承父類的行為。
- is-a原則,在java中子類只能繼承一個(gè)父類。要開(kāi)始理解多態(tài),必須先知道操作的對(duì)象是“哪一種”。
- 多態(tài),使用單一接口操作多種類型的對(duì)象。
- 在繼承父類之后,定義與父類中相同的方法部署,但執(zhí)行內(nèi)容不同,稱為重新定義。
- 如果某方法區(qū)塊真的沒(méi)有任何程序代碼操作,可以直接使用abstract標(biāo)識(shí)該方法為抽象方法,該方法不用撰寫{}區(qū)塊,直接“;”結(jié)束即可。
注意:
- 關(guān)鍵字extends是為了擴(kuò)充和繼承父類的行為。
- 在java中一個(gè)子類只能繼承一個(gè)父類。
- 在判斷操作對(duì)象是“哪一種”的時(shí)候,檢查語(yǔ)法的邏輯是否正確,方式是從=右邊往左邊讀:右邊是不是一種左邊呢(右邊類是不是左邊類的子類)?
- 在重新定義中,子類必須撰寫與父類方法相同的簽署,如果因?yàn)槭韬龃蝈e(cuò)字就會(huì)完全不同(雖然編譯會(huì)成功,但是行為會(huì)完全不同),但在JDK5后標(biāo)注@Override,表示要求編譯程序檢查是否真的重新定義父類中某個(gè)方法。
- 子類如果繼承抽象類,對(duì)于抽象方法有兩種做法,一種是繼續(xù)標(biāo)注該方法為abstract(必須在class前標(biāo)注abstract),另一種就是操作抽象方法,如果都沒(méi)有實(shí)施,則會(huì)出現(xiàn)編譯錯(cuò)誤。
繼承與法細(xì)節(jié):
特點(diǎn):
- protected成員權(quán)限關(guān)鍵字,相同包中的類可以直接存取,不同包中的類可以在繼承后的子類直接存取。(不開(kāi)放訪問(wèn)權(quán)限,但可以直接存取。)
- 如果想要取得父類中的方法定義,可以調(diào)用方法前,加上super關(guān)鍵字。
- 在class前使用了final關(guān)鍵字定義,那么表示這個(gè)類是最后一個(gè),不會(huì)再有子類,也就相當(dāng)于不能再被繼承。在定義方法時(shí)候也可以限定為final,表示最后一次定義方法了,也就是子類不可以重新定義final方法。
- 在java繼承中一定繼承了java.lang.Object,簡(jiǎn)單來(lái)說(shuō)任何類追溯至最上層類中一定是Object父類。
注意:
- JAVA中有3個(gè)權(quán)限關(guān)鍵字,public、protected與private,但實(shí)際上有4個(gè)權(quán)限范圍。
- 若原來(lái)成員public,子類中重新定義時(shí)不可謂private或protected。
- 在JDk5之前,重新定義方法時(shí)除了可以定義權(quán)限較大的關(guān)鍵字之外,其他部分必須與父類中方法簽署完全一致。
- 在創(chuàng)建ArrayList實(shí)例時(shí)候,可以指定內(nèi)部數(shù)組初始容量,如果使用無(wú)參數(shù)構(gòu)造函數(shù),則默認(rèn)容量為16。
垃圾收集:在執(zhí)行流程中,無(wú)法通過(guò)變量參考的對(duì)象,就是GC(Garbage Collection) 認(rèn)定的垃圾對(duì)象。
抽象類:雖然是抽象方法,但在go()方法中,還是可以調(diào)用。
第七章
- 接口:接口相當(dāng)于另一種“繼承”,可任意操作接口內(nèi)的行為。
特點(diǎn):
- 接觸到了新的關(guān)鍵詞interface。這里是針對(duì)“定義行為”,在java中可以使用interface關(guān)鍵字進(jìn)行定義。類要操作接口必須使用implements關(guān)鍵字
- 接口可用于定義行為但不定義操作。
- 行為的多態(tài),判斷代碼中如同is-a原則相同,“右邊是不是擁有左邊的行為”或者“右邊對(duì)象是不是操作了左邊的接口”
- 對(duì)于解決需求的變化,首先需要編寫有彈性、維護(hù)性的程序,即增加新的需求,在原有的程序無(wú)需修改,只需針對(duì)新需求撰寫程序。
- 在編寫一個(gè)好的程序代碼的時(shí)候需要好的一個(gè)架構(gòu),各個(gè)架構(gòu)之間可用操作接口來(lái)連接,也可以用子類繼承父類來(lái)連接。
注意:
- 接口的操作與類的繼承不同,在java中只能繼承一個(gè)父類,但是類可以同時(shí)繼承某個(gè)類,同樣的可以同時(shí)操作某些接口。
- 關(guān)鍵字interface是用來(lái)定義操作的,關(guān)鍵字implements是用來(lái)類操作關(guān)鍵字的。
- 操作某接口時(shí),有兩種方法對(duì)接口進(jìn)行定義,一種是操作接口中定義方法,另一種是再度將該方法標(biāo)注abstract。
- 在java中,接口可以繼承自另一個(gè)接口,也就是繼承父接口行為。
- 在判斷行為的多態(tài)的時(shí)候,與判斷is-a原則相同,從=的右邊往左邊讀進(jìn)行判斷。
接口與法細(xì)節(jié):
- 接口的默認(rèn),在java中可使用interface來(lái)定義抽象行為與外觀,在接口中的方法沒(méi)有操作時(shí),一定得是公開(kāi)且抽象,public abstract。
- 在接口枚舉中,一定要使用=指定值,否則就會(huì)編譯錯(cuò)誤。
- 在JDK5之后可用enum語(yǔ)法來(lái)定義枚舉常數(shù)。
注意
- 類可以操作兩個(gè)以上的接口,如果兩個(gè)接口都定義了某方法,如果表示相同的行為,那可以定義一個(gè)父接口,因?yàn)榻涌诳梢岳^承別的借口,也可以同時(shí)繼承兩個(gè)以上的接口,通樣也是使用extends關(guān)鍵字。
- 在JDK8之前,要在匿名內(nèi)部類中存取局部變量,則該局部變量必須是final,否則會(huì)發(fā)生編譯失敗。
- 關(guān)于enum定義枚舉常數(shù)時(shí)候,實(shí)際上enum定義了特殊的類,繼承自java.lang.Enum,直接撰寫程序繼承enum會(huì)被編譯程序拒絕。因?yàn)闃?gòu)造函數(shù)權(quán)限設(shè)定為private,在實(shí)際定義的某個(gè)類中,才可以將其實(shí)例化。
教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程
- 問(wèn)題一:不能很好的使用“is-a”原則判斷何時(shí)可以編譯成功何時(shí)可以編譯失敗,但是借助了書上的劍士與魔法師游戲的例子有所了解。比如:
Role role1= new SwordsMan();Role role2 = new Magician();可以很好的有助于理解“哪一種”原則。 - 問(wèn)題二:對(duì)于3個(gè)權(quán)限關(guān)鍵字,但是有4個(gè)權(quán)限范圍的知識(shí)點(diǎn),當(dāng)看了書上的列舉的表格和書上給的參照實(shí)例,也有所了解。
- 問(wèn)題三:在構(gòu)造函數(shù)部分,只知道在子類構(gòu)造函數(shù)中沒(méi)有指定執(zhí)行某個(gè)父類中的構(gòu)造函數(shù),會(huì)默認(rèn)調(diào)用無(wú)參構(gòu)造函數(shù),但是看書后得知先執(zhí)行子類中的函數(shù),如果想執(zhí)行父類中某構(gòu)造函數(shù),可以用
super()指定。 - 問(wèn)題四:對(duì)于后來(lái)的構(gòu)建框圖的時(shí)候有一點(diǎn)問(wèn)題,根源在于類可以操作兩個(gè)以上的類,但是只能繼承一個(gè)類。當(dāng)把握住這一點(diǎn)時(shí)候,對(duì)于框圖思路的搭建就好了許多,加上書上的
Airplane的例子,首先設(shè)計(jì)一個(gè)Airplane作為Seaplane的父類,而Airplane操作Flyer的接口,Seaplane繼承Airplane后操作Swimmer接口,這樣Seaplane就有了可以飛行或者可以海面滑行的功能了。 - 問(wèn)題五:在使用
enum定義枚舉常數(shù)的時(shí)候,不理解在類中才可以實(shí)例化的意思。結(jié)合書上的Action的例子,發(fā)現(xiàn)enum實(shí)際上是一種繼承,但不能直接編譯,所以,在類中才可以將其實(shí)例化。
代碼調(diào)試中的問(wèn)題和解決過(guò)程
- 問(wèn)題:在編輯Game1的時(shí)候,對(duì)于理解繼承存在一點(diǎn)問(wèn)題。當(dāng)利用
extands繼承Role的時(shí)候,編輯總是不能通過(guò)。前面Role.java明明已經(jīng)編通過(guò)了,所以,我就在疑惑問(wèn)題出在了哪里,難道是要將這四個(gè)代碼放到同一個(gè).java中,用同一個(gè)public公開(kāi)類嗎?可我又在疑惑,如果這樣子的話,其他三個(gè).java文件的公開(kāi)類又該如何修改?
- 解決:經(jīng)過(guò)詢問(wèn)同學(xué),知道了父類和即將繼承的子類之間的關(guān)系,不需要將這幾段段代碼放到同一個(gè).java文件夾下,只要放到同一個(gè)package下就可以繼承了。但是編輯不通過(guò),問(wèn)題又出現(xiàn)在了哪里?
package cc.openhome;,問(wèn)題出在了這里!把每個(gè).java中的這行代碼刪掉,編輯就可以通過(guò)了。可是這個(gè)包的作用到底是什么,書翻到第二章看了書上的概念,還是不太理解,什么時(shí)候用,什么時(shí)候不用,希望老師能夠講講。
代碼托管http://git.oschina.net/bestiisjava2017/bestijava20155336huguangyuan
代碼提交過(guò)程截圖:
- 代碼量截圖:
上周考試錯(cuò)題總結(jié)
- 2.填空:~0b1010的十進(jìn)制值是(-11)
- 4.填空:System.out.println(“”+52+25);的結(jié)果是(5225);
- 5.判斷: Java中,=與==并沒(méi)有在基本類型和類類型的不同。(√)
- 8.填空:Java中方法參數(shù)只用(傳值)調(diào)用。
其他(感悟、思考等,可選)
這周的學(xué)習(xí),感覺(jué)更多是一種延伸。這兩周已經(jīng)很明顯可以感覺(jué)到學(xué)習(xí)java的壓力了,每周要學(xué)習(xí)兩章的知識(shí)。在自習(xí)的時(shí)候的的確確存在很多問(wèn)題,越來(lái)越覺(jué)得java的難度,但是同樣的也感受到了java學(xué)習(xí)的魅力。雖然以前的c語(yǔ)言學(xué)習(xí)一般,但是通過(guò)這四周的java學(xué)習(xí),還有自己代碼的積累,漸漸的發(fā)現(xiàn)雖然敲代碼是一件很枯燥無(wú)味的工作,但是敲完代碼回頭看發(fā)現(xiàn)這樣的敲代碼真的可以便于理解書上不懂得問(wèn)題。就像編程一樣,當(dāng)遇到了問(wèn)題后需要去嘗試解決,去想辦法解決問(wèn)題。在這幾周的學(xué)習(xí),發(fā)現(xiàn)自己的元知識(shí)也扎實(shí)了不少,軟知識(shí)也有了很大的提高。也發(fā)現(xiàn)這這種自主性學(xué)習(xí)好像學(xué)習(xí)完之后會(huì)更加有成就感。
學(xué)習(xí)進(jìn)度條
老師,我的MD有個(gè)問(wèn)題
每次把老師的進(jìn)度條模板復(fù)制下來(lái)后,都會(huì)顯示的都很亂。。。。。就跟這個(gè)圖一樣~~~課代表也不知道該怎么解決。
| | 代碼行數(shù)(新增/累積)| 博客量(新增/累積)|學(xué)習(xí)時(shí)間(新增/累積)|重要成長(zhǎng)|
| -------- | :----------------:|:----------------:|:---------------: |:-----:|
| 目標(biāo) | 5000行 | 30篇 | 400小時(shí) ||
| 第一周 | 200/200 | 2/2 | 20/20 ||
| 第二周 | 300/500 | 2/4 | 18/38 | 學(xué)習(xí)java的基礎(chǔ)語(yǔ)法 |
| 第三周 | 500/1000 | 3/7 | 22/60 |學(xué)習(xí)java對(duì)象及封裝 |
| 第四周 | 300/1300 | 2/9 | 30/90 | 學(xué)習(xí)了繼承與多態(tài)的關(guān)系,以及接口的多態(tài)操 |
參考:軟件工程軟件的估計(jì)為什么這么難,軟件工程 估計(jì)方法
計(jì)劃學(xué)習(xí)時(shí)間:21小時(shí)
實(shí)際學(xué)習(xí)時(shí)間:16小時(shí)
改進(jìn)情況:
有空多看看現(xiàn)代軟件工程 課件 軟件工程師能力自我評(píng)價(jià)表
參考資料
Java學(xué)習(xí)筆記(第8版)
《Java學(xué)習(xí)筆記(第8版)》學(xué)習(xí)指導(dǎo)
- ...
總結(jié)
以上是生活随笔為你收集整理的20155336 2016-2017-2 《Java程序设计》第四周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解决掉你心中 js function与F
- 下一篇: Extract Fasta Sequen