继承、抽象
繼承、抽象
一.繼承
1.繼承解決的問題:共性抽取
子類中有共性的內容(成員變量、成員方法)抽取到父類中,子類可以直接使用父類非私有的成員。
2.繼承的格式
public cLass 父類{//成員變量、構造方法、成員方法 }public class 子類 extends 父類{//成員變量、構造方法、成員方法 }3.繼承的特點
(1)Java只支持單一繼承:一個類只能有一個父類。
(2)java可以多層繼承:父類也可以有自己的父類,且子類可以繼承父類的父類
注:任何一個類都直接或者間接的繼承Object類。
4.繼承的好處弊端:
好處:提高了代碼的復用性、可維護性。
弊端:增強了代碼的耦合性(類與類之間的關系更加密切)
5.繼承中的訪問特點
(1)成員變量的訪問
遵循就近原則:先到子類中找,子類沒有就去父類中找【如果想單獨用子類或者父類的變量,則用this和super區分調用】
(2)成員方法的訪問
遵循就近原則,補充:如果本類調用自己的方法,則this可以省略
(3)構造方法的訪問
a.子類中所有的構造方法,都會默認去調用父類的空參數構造方法
原因:子類的構造方法的第一行有一個super(),它用于父類的成員初始化。
b.如果不想去訪問父類的空參構造方法,可以手動使用super(參數)去訪問有參構造方法
注意:this();和super();都只能在構造方法的第一行,所以他們不能共存。
6.方法重寫
(1)概念:在子父類關系中,子類和父類有一模一樣的方法,這種現象叫方法重寫。
【意義:子類復寫父類方法,既能保證父類方法的不變,子類也能有自己的方法實現】
(2)注意事項:
a.私有方法不能重寫
b.靜態、final修飾方法不能復寫
c.子類復寫父類方法,權限必須大于或等于父類
【public > protected > 默認 > private】
(3)與方法重載的區分
方法重載:同一個類中,方法名相同,參數列表不同(參數類型不同、參數個數不同、參數順序不同,方法修飾權限可不同)
二.抽象
1.概念
抽象是繼承的一個延伸,在父類中有些方法不知道怎么寫,可以不寫,這就是抽象方法。
2.抽象的使用格式:
//抽象一定是修飾父類 public abstract class 父類{ public abstract void 抽象方法(); public void 普通方法(){} } //子類繼承抽象類,必須重寫父類的抽象方法 public class 子類 extends 父類{ //重寫抽象方法 @Override//注解,可用于判斷重寫方法是否寫錯 public void 抽象方法(){ 方法體; } }3.抽象的注意事項:
(1)抽象類不能創建對象
(2)具體的子類繼承抽象類,必須重寫抽象方法,如果是抽象類繼承,可以不用復寫方法(它的存在意義可以補充父類的抽象方法)
(3)抽象方法必須在抽象類中,但是抽象類中不一定要有抽象方法
(4)抽象方法沒有方法主體
4.抽象的意義
限制子類的行為(方法),通過父類的抽象方法進行定義。
總結
- 上一篇: mysql中使用CASE WHEN
- 下一篇: static修饰符