201621123079《java程序设计》第六周作业总结
作業06-接口、內部類
1. 本周學習總結
1.1 面向對象學習暫告一段落,請使用思維導圖,以封裝、繼承、多態為核心概念畫一張思維導圖或相關筆記,對面向對象思想進行一個總結。
2. 書面作業
1. clone方法
1.1 在test1包中編寫Employee類,在test2包中新建一個Test類,并在其main中新建test1包中的Employee的對象,然后使用clone方法克隆一個新對象,能否成功?為什么?
不能成功;clone被修飾為protected,所以只限類本身和子類訪問,不能跨包訪問。
1.2 如果要為自定義的類覆蓋clone方法,需注意什么?
- 實現Cloneable接口;
- 將clone聲明為public;
- 調用父類的方法進行克隆操作,(super.clone);
1.3 Object對象中的toString, equals, hashCode方法都使用public修飾,而clone方法卻被protected修飾,請嘗試解釋原因。為什么不聲明為public呢?
利用protected修飾clone方法,是為了安全考慮。Object類中的clone方法是淺拷貝,如果是對象,它拷貝的只是這個對象的一個引用,而這個引用仍然指向那個對象,當我們改變這個引用的屬性時,原來對象也會跟著改變,這不是我們希望看到的,但是Object類肯定做不到深拷貝,因為它不知道你的類里有哪些引用類型,所以把修飾符定義為protected,這樣想要在其他任何地方調用這個類的clone方法,這個類就必須去重寫clone方法并且把修飾符改為public,并且把修飾符修改為public,這樣在任何地方都可以調用這個類的clone方了。
詳細解釋
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) { //你的代碼 } };
實現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對引用類型數組進行排序需要有一個什么前提條件?
實現Comparable接口。
4.大作業-繼續完善(嘗試使用接口改造你們的系統)
4.1 現在希望將系統中購物車的操作抽象到相應的DAO接口。
接口類:
4.2 為該接口定義至少兩個實現(如數組、列表、文件)。截圖自己負責部分的關鍵代碼,要求出現名字與學號
購物車類:
User類(調用購物車):
UserList類:
4.3 給出你們的Main程序,說明定義DAO接口的好處。
實現Dao接口后可以調用多種類實現功能,而修改時不用修改類。
5. 代碼閱讀:PersonTest.java(abstract、多態、super)
5.1 畫出類的繼承關系
5.2 main函數的代碼實現什么功能?
將四個人的年齡進行升序輸出。
5.3 如果將子類中的super構造函數去掉行不行?
不行;去掉super構造函數后子類就無法調用父類中的方法了。
5.4 PersonTest.java中哪里體現了多態?
- Student,Employee等類繼承了Person類;
這些類又重寫了toString()方法,使得類本身有自身的屬性和方法,體現了多態性。
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 | 0 | 0 | 0 | 0 |
| 5 | 322 | 322 | 5 | 5 |
| 6 | 729 | 407 | 12 | 7 |
| 7 | 1074 | 245 | 20 | 8 |
轉載于:https://www.cnblogs.com/lsyuan/p/7747361.html
總結
以上是生活随笔為你收集整理的201621123079《java程序设计》第六周作业总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [face_recognition中文文
- 下一篇: oracle间隔分区