Week06-接口、内部类
生活随笔
收集整理的這篇文章主要介紹了
Week06-接口、内部类
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.1 面向?qū)ο髮W(xué)習(xí)暫告一段落,請使用思維導(dǎo)圖,以封裝、繼承、多態(tài)為核心概念畫一張思維導(dǎo)圖或相關(guān)筆記,對面向?qū)ο笏枷脒M(jìn)行一個(gè)總結(jié)。
注1:關(guān)鍵詞與內(nèi)容不求多,但概念之間的聯(lián)系要清晰,內(nèi)容覆蓋面向?qū)ο蟮暮诵膬?nèi)容即可。
注2:顏色要少、連線不要復(fù)雜,必要的時(shí)候要在連線上進(jìn)行說明。
2. 書面作業(yè)
1. clone方法
1.1 在test1包中編寫Employee類,在test2包中新建一個(gè)Test類,并在其main中新建test1包中的Employee的對象,然后使用clone方法克隆一個(gè)新對象,能否成功?為什么?
不能成功,因?yàn)镋mployee類和Test類沒有在一個(gè)包內(nèi).。
1.2 如果要為自定義的類覆蓋clone方法,需注意什么?
clone方法是protected修飾,只能在同一個(gè)類中訪問,如果我們要為自定義的類覆蓋clone方法,需要將其修改為public,這樣其他類才能訪問這個(gè)類。
1.3 Object對象中的toString, equals,hashCode方法都使用public修飾,而clone方法卻被protected修飾,請嘗試解釋原因。為什么不聲明為public呢?
clone方法被protected修飾起到一定的保護(hù)作用-只能被同包的類訪問,clone方法 是一個(gè)淺拷貝的過程,不會(huì)改變原對象的內(nèi)容;如果聲明為public,那么屬性就公開了,任何包里的類都能去訪問修改,這樣不安全也不穩(wěn)定。。
2. 內(nèi)部類
2.1 使用匿名類與Lambda表達(dá)式改寫題集面向?qū)ο?-進(jìn)階-多態(tài)接口內(nèi)部類的題目7-2。請貼圖關(guān)鍵代碼與運(yùn)行結(jié)果,請?jiān)谶\(yùn)行結(jié)果中出現(xiàn)你的學(xué)號(hào)與姓名。
2.2. 分析下列代碼,回答shapeComparator所指向的對象與Comparator接口有什么關(guān)系?
Comparator<Shape> shapeComparator = new Comparator<Shape>() { @Override public int compare(Shape o1, Shape o2) { //你的代碼 } };
shapeComparator使用了匿名內(nèi)部類實(shí)現(xiàn)了Comparator接口,重新改寫了compare方法。
2.3 題集:6-1(匿名內(nèi)部類)實(shí)驗(yàn)總結(jié)。你覺得使用匿名內(nèi)部類有什么好處?
本題的匿名內(nèi)部類是ActionListener,其他的實(shí)現(xiàn)主要就是循環(huán)輸出;匿名內(nèi)部類可以讓我們的代碼更加簡便,如果我們有使用一次的類,不用去創(chuàng)建額外的類,直接用匿名內(nèi)部代替,體現(xiàn)了一定的封裝性。
3. PTA實(shí)驗(yàn)總結(jié)
3.1 PTA(自定義接口)。并回答:相比較不寫接口,直接寫一個(gè)類包含IntegerStack相應(yīng)的方法來說,定義IntegerStack接口,然后定義其實(shí)現(xiàn)類這種方式有什么好處?
如果直接寫一個(gè)類包含IntegerStack相應(yīng)的方法,相應(yīng)的數(shù)據(jù)存儲(chǔ)方式就已經(jīng)確定,定義IntegerStack接口,我們可以用數(shù)組,列表等形式的方法來實(shí)現(xiàn)存儲(chǔ),不止用一種形式來實(shí)現(xiàn)。
3.2 PTA(靜態(tài)內(nèi)部類)。并回答:你覺得什么時(shí)候應(yīng)該使用靜態(tài)內(nèi)部類?靜態(tài)內(nèi)部類與內(nèi)部類有什么區(qū)別?
(1) 簡單來說,靜態(tài)內(nèi)部類就是一個(gè)嵌套類,它可以有只屬于自己的靜態(tài)內(nèi)部成員,并且靜態(tài)內(nèi)部類不會(huì)隨著外部類的改變而改變,所以當(dāng)我們不需要訪問內(nèi)部類的時(shí)候使用靜態(tài)內(nèi)部類,這樣可以提高程序效率。
(2)從代碼上來說,靜態(tài)內(nèi)部類與內(nèi)部類的區(qū)別就是有無static,內(nèi)部類的創(chuàng)建需要外部類,而靜態(tài)內(nèi)部類不需要,并且靜態(tài)內(nèi)部類可以有靜態(tài)成員和非靜態(tài)成員,而內(nèi)部類沒有靜態(tài)成員。
3.3 PTA(繼承覆蓋綜合練習(xí)-Person、Student、Employee、Company)。并回答:使用Collections.sort對引用類型數(shù)組進(jìn)行排序需要有一個(gè)什么前提條件?
在使用Collections.sort對引用類型數(shù)組進(jìn)行排序前我們需要先實(shí)現(xiàn)一個(gè)比較接口,如:用Comparable接口,實(shí)現(xiàn)compareTo方法;用Comparator接口,實(shí)現(xiàn)compare方法。
4.大作業(yè)-繼續(xù)完善(嘗試使用接口改造你們的系統(tǒng))
參考Case-StudentDao.zip案例
假設(shè)在不同的實(shí)現(xiàn)中,購物車?yán)锏纳唐酚械氖谴娣旁贏rrayList,有的是存放在數(shù)組中。
4.1 現(xiàn)在希望將系統(tǒng)中購物車的操作抽象到相應(yīng)的DAO接口。
4.2 為該接口定義至少兩個(gè)實(shí)現(xiàn)(如數(shù)組、列表、文件)。截圖自己負(fù)責(zé)部分的關(guān)鍵代碼,要求出現(xiàn)名字與學(xué)號(hào)。
4.3 給出你們的Main程序,說明定義DAO接口的好處。
5. 代碼閱讀:PersonTest.java(abstract、多態(tài)、super)
5.1 畫出類的繼承關(guān)系
5.2 main函數(shù)的代碼實(shí)現(xiàn)什么功能?
將創(chuàng)建的四個(gè)對象按年齡大小進(jìn)行升序排序并輸出。
5.3 如果將子類中的super構(gòu)造函數(shù)去掉行不行?
不行,super方法是子類調(diào)用父類函數(shù)的方法,如果去掉,子類無法訪問父類中被重寫的函數(shù),整個(gè)程序就無法實(shí)現(xiàn)。
5.4 PersonTest.java中哪里體現(xiàn)了多態(tài)?
從定義上來看,多態(tài)是同一個(gè)行為具有不同表現(xiàn)形式或形態(tài)的能力。在PersonTest.java中,Person類,Employee類,Manager類,Programmer類,Student類中都覆蓋了toString方法,體現(xiàn)了類的多態(tài)性。
3.碼云及PTA
題集:jmu-Java-04-面向?qū)ο?-進(jìn)階-多態(tài)接口內(nèi)部類
3.1. 碼云代碼提交記錄
在碼云的項(xiàng)目中,依次選擇“統(tǒng)計(jì)-Commits歷史-設(shè)置時(shí)間段”, 然后搜索并截圖
3.2 截圖PTA題集完成情況圖
3.3 統(tǒng)計(jì)本周完成的代碼量
需要將每周的代碼統(tǒng)計(jì)情況融合到一張表中。
| 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 |
| 3 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 |
| 5 | 306 | 306 | 9 | 9 |
| 6 | 515 | 209 | 17 | 8 |
| 7 | 811 | 296 | 33 | 16 |
轉(zhuǎn)載于:https://www.cnblogs.com/k-wzj/p/7746178.html
總結(jié)
以上是生活随笔為你收集整理的Week06-接口、内部类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度解析大型分布式电商网站演变过程以及构
- 下一篇: 监控利器--Cacti