1. 程式人生 > >201621123021《JAVA程序設計》第六周學習總結

201621123021《JAVA程序設計》第六周學習總結

包含 log 不能 在外 希望 -c 註意 段落 定義

201621123021《JAVA程序設計》第六周學習總結

1. 本周學習總結

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

技術分享

  • 面向對象及創建一個對象,這個對象一般是各類,這個類包含了其屬性以及方法,可繼承父類、可實現接口。

2. 書面作業

1. clone方法

1.1 在test1包中編寫Employee類,在test2包中新建一個Test類,並在其main中新建test1包中的Employee的對象,然後使用clone方法克隆一個新對象,能否成功?為什麽?

  • 不能成功,因為clone方法是被protected
    修飾的,只能在包內被訪問。

1.2 如果要為自定義的類覆蓋clone方法,需註意什麽?

  • 需要註意要clone的類是要深clone還是淺clone,如果自定義類只包含基本數據類型則只需要直接使用clone()就可以了,若包含非基本數據類型則需要在非基本數據的屬性中也使用clone()從而達到完整的克隆。

1.3 Object對象中的toString, equals, hashCode方法都使用public修飾,而clone方法卻被protected修飾,請嘗試解釋原因。為什麽不聲明為public呢?

  • toSring,equals,hashCode屬於通用方法,使我們在JAVA經常要使用的我們在使用時對於其安全性的考慮較少,而對於clone方法如何不適用protected修飾的話會是會是數據出現向包外轉移的不安全現象。

2. 內部類

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

Collections.sort(personSortable,(PersonSortable o1,PersonSortable o2)->{if(o1.getAge()>=o2.getAge()){ return 1; } else{ return -1; } });

技術分享

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(匿名內部類)實驗總結。你覺得使用匿名內部類有什麽好處?

  • 簡化代碼結構,是程序能夠高效運行。

3. PTA實驗總結

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

  • 自定義IntegerStack接口能夠使我們程序的創建新類,實現接口中的方法是能夠具體對於該類是什麽對象然後進行判定使其具體實現。

3.2 PTA(靜態內部類)。並回答:你覺得什麽時候應該使用靜態內部類?靜態內部類與內部類有什麽區別?

  • 但我們類中的成員都是靜態時應該使用內部靜態類。
  • 當我們不使用我外部中要直接使用靜態內部類裏面的對象時使用靜態內部類,當我們的內部類的對象需要在外部實例化是使用內部類。

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

  • 本題使用Collection.sort實現Comparable接口或者Comparator接口,需要對其方法全部實現。

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

假設在不同的實現中,購物車裏的商品有的是存放在ArrayList,有的是存放在數組中。

4.1 現在希望將系統中購物車的操作抽象到相應的DAO接口。

技術分享

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

技術分享

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

技術分享

  • DAO接口的好處使得代碼結構更加清晰,便於管理。

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

5.1 畫出類的繼承關系

技術分享

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

  • main函數創建四個成員對象,然後通過for循環對這四個成員的年齡升序,然後輸出。

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

  • 不行,子類只有通過super函數才能對父類的屬性進行重載。

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

  • 體現了子類繼承父類方法後,自己還有自己特定的方法,比如employee類有salary方法,Manager類有bonus方法。

3.碼雲及PTA

3.1. 碼雲代碼提交記錄

技術分享

3.2 截圖PTA題集完成情況圖

技術分享

技術分享

3.3 統計本周完成的代碼量

周次總代碼量新增代碼量總文件數新增文件數
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
4 437 437 7 7
5 905 468 13 6
6 1294 389 21 8

201621123021《JAVA程序設計》第六周學習總結