201621123044 《Java程序設計》第六週實驗總結

1. 本週學習總結

1.1 面向對象學習暫告一段落,請使用思惟導圖,以封裝、繼承、多態爲核心概念畫一張思惟導圖或相關筆記,對面向對象思想進行一個總結。

注1:關鍵詞與內容不求多,但概念之間的聯繫要清晰,內容覆蓋面向對象的核心內容便可。
注2:顏色要少、連線不要複雜,必要的時候要在連線上進行說明。java

1.2 可選:使用常規方法總結其餘上課內容。

2. 書面做業

1. clone方法

1.1 在test1包中編寫Employee類,在test2包中新建一個Test類,並在其main中新建test1包中的Employee的對象,而後使用clone方法克隆一個新對象,可否成功?爲何?

不成功;clone方法爲Object對象不能被不一樣包的非子類訪問,於是要使用clone的方法克隆一個新對象需重寫clone的方法數組

1.2 若是要爲自定義的類覆蓋clone方法,需注意什麼?

1.覆蓋的方法須要聲明爲public。2.調用super.clone()安全

1.3 Object對象中的toString, equals, hashCode方法都使用public修飾,而clone方法卻被protected修飾,請嘗試解釋緣由。爲何不聲明爲public呢?

出於訪問權限的安全性的考慮,clone方法被protected修飾,其實現了淺拷貝,沒有克隆包含在對象中的其餘引用型屬性;若是實現clone方法還能修改對象,那麼這樣的實現方法則十分不安全ide

2. 內部類

2.1 使用匿名類與Lambda表達式改寫題集面向對象2-進階-多態接口內部類的題目7-2。請貼圖關鍵代碼與運行結果,請在運行結果中出現你的學號與姓名。


2.2. 分析下列代碼,回答shapeComparator所指向的對象與Comparator接口有什麼關係?

Comparator shapeComparator = new Comparator () { @Override public int compare(Shape o1, Shape o2) { //你的代碼 } };

shapeComparator所指向的對象使用匿名內部類實現Comparator,經過重寫compare方法,實現Shape o1與Shape o2之間的比較函數

2.3 題集:6-1(匿名內部類)實驗總結。你以爲使用匿名內部類有什麼好處?

是須要建立ActionListener類型的對象,而後編寫其匿名內部類。後來搞清楚以後,就很簡單的實現了。學習

3. PTA實驗總結

3.1 PTA(自定義接口)。並回答:相比較不寫接口,直接寫一個類包含IntegerStack相應的方法來講,定義IntegerStack接口,而後定義其實現類這種方式有什麼好處?

若直接寫一個類包含IntegerStack相應的方法,則就限定了實現方法;而若是定義IntegerStack接口,而後定義其實現類,就能夠根據不一樣的需求來用不一樣的形式儲存數據,更加多樣化。code

3.2 PTA(靜態內部類)。並回答:你以爲何時應該使用靜態內部類?靜態內部類與內部類有什麼區別?

這道題要先建立靜態內部類,靜態內部類不能直接訪問外部類的非靜態成員,須要使用外部類名.靜態內部類調用。在各種中須要某一個方法,但其自己不是這個類的成員時,能夠將該方法寫入靜態內部類中,再經過外部類調用。靜態內部類與內部類的區別:靜態內部類的對象不須要經過外部類對象來生成,能夠直接使用外部類類名.靜態內部類類名生成。對象

3.3 PTA(繼承覆蓋綜合練習-Person、Student、Employee、Company)。並回答:使用Collections.sort對引用類型數組進行排序須要有一個什麼前提條件?

本題難點在於equal()的實現
使用Collections.sort對引用類型數組進行排序前提:繼承Comparable、Comparator接口,而且分別重寫compareTo方法、compare方法。blog

4.大做業-繼續完善(嘗試使用接口改造大家的系統)

參考Case-StudentDao.zip案例
假設在不一樣的實現中,購物車裏的商品有的是存放在ArrayList,有的是存放在數組中。排序

4.1 如今但願將系統中購物車的操做抽象到相應的DAO接口。

4.2 爲該接口定義至少兩個實現(如數組、列表、文件)。截圖本身負責部分的關鍵代碼,要求出現名字與學號。

4.3 給出大家的Main程序,說明定義DAO接口的好處。

5. 代碼閱讀:PersonTest.java(abstract、多態、super)

5.1 畫出類的繼承關係

5.2 main函數的代碼實現什麼功能?

main函數的代碼實現功能:將建立的四個對象按照Age年齡升序排列

5.3 若是將子類中的super構造函數去掉行不行?

不行,由於子類的實例化過程當中,子類中全部的構造函數默認都不能訪問父類中空參數的構造函數,只能經過super()來調用,故在子類構造對象時,訪問子類構造函數時,父類也運行。這道題若是將子類中的super構造函數去掉,就不能調用父類裏面的構造函數,固然不行了!

5.4 PersonTest.java中哪裏體現了多態?

Person中,各種中的toString方法的重寫,體現了多態這一特性。參考連接:

PersonTest.java

3.碼雲及PTA

3.2 截圖PTA題集完成狀況圖

須要有兩張圖(1. 排名圖。2.PTA提交列表圖

3.3 統計本週完成的代碼量

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 183 183 9 9
2 498 315 15 6
3 718 220 26 11
4 921 203 31 5
5 1251 330 37 6

須要將每週的代碼統計狀況融合到一張表中。

相關文章
相關標籤/搜索