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