使用java實現面向對象 第二章
第二章 繼承
一、使用繼承
繼承是面向對象的三大特特之一,Java只支持單繼承。繼承表達 is a 的關系。
在Java中,所有的Java類都直接或間接的地繼承了Java.lang.object類,所有類都是Object的子類
1.編寫父類
Class Pet {
//公共的屬性和方法
}
2.編寫子類,繼承父類
Class Dog extends Pet {
//子類特有的屬性和方法
}
Class Penguin extends Pet {
}
二、關於修飾符可否被子類繼承
繼承public和protected修飾的屬性和方法,不管同不同包。
繼承默認權限修飾符的屬性和方法,只有在同包
無法繼承private修飾的屬性和方法
無法繼承父類的構造函數
訪問修飾符 |
本地 |
同包 |
子類 |
其他 |
Private |
|
|
|
|
默認 |
|
|
||
Protected |
|
|||
Public |
二、理解繼承
1.子類訪問父類成員
使用super關鍵字
訪問父類屬性
Super.name; (super代表父類對象)
2 ) 訪問父類方法
Super.print();
2.有些父類成員不能繼承
1)private成員
2)子類與父類不在同包,使用默認訪問權限的成員
3)構造方法
3.訪問修飾符protected
1)可以修飾屬性和方法
2)本類、同包、子類可以訪問
4.
1)Super必須出現再子類(子類的方法或構造函數)中,不能再其他位置
2)可以訪問父類成員(可被繼承的)
3)訪問父類構造函數必須在子類構造函數的第一條語句
四、符合is-a關系的設計使用繼承
1.Java中,繼承(Inheritance)通過extends關鍵字來實現,其中SubClass稱為子類,SuperClass稱為父類、基類或超類。
2.在子類中可以根據需求對從父類繼承的方法進行重新編寫,稱為方法的重寫或方法的覆蓋。
方法的重寫滿足的要求:
五、構造方法
1.構造方法不能被繼承因此不能被重寫。
2.在子類中調用父類的構造方法?
Super();
Super(參數表);
3.super代表對當前對象的直接父類對象的默認引用。在子類中可以通過super關鍵字來訪問父類的成員。
Super的要求
4.繼承條件下構造方法的調用規則:
5.使用this和super註意事項:
六、重寫和繼承關系中的構造方法
重寫父類的print()方法
重寫:子類中可以根據需求對從父類繼承的方法進行重新編寫,稱為方法的重寫或者方法的覆蓋。
一.方法重寫必須滿足如下要求:
1.重寫方法和被重寫方法必須具有相同的方法名
2.重寫方法和被重寫方法必須具有相同的參數列表
3.重寫方法的返回值必須和被重寫方法的返回值類型相同或者是其子類。
4.重寫方法不能縮小被重寫方法的訪問權限。
二、重載和重寫有什麽區別?”
重載:重載在同一個類中的同名方法,要求方法名相同,參數列表不同,與返回值類型,訪問修飾符無關。
重寫:重寫是子類和父類之間的同名方法,要求方法名相同,參數列表相同,返回值類型相同,訪問修飾符不能嚴於父類。
七、abstract關鍵字
1.抽象類和抽象方法都通過abstract關鍵字來修飾。
2.abstract也可以用於方法——抽象方法
1)抽象方法沒有方法體
2)抽象方法必須在抽象類裏。
3)抽象方法必須在子類中被實現,除非子類是抽象類。
Public abstract void print();——沒有方法體
3.final修飾符
1)用final修飾的類,不能再被繼承
2)用final修飾的方法,不能被子類重寫
3)用final修飾的變量(包括成員變量和局部變量)將變成常量,只能賦值一次。
註意:P57
4.abstract是否可以和private、static、final共用
使用java實現面向對象 第二章