概念繼承:子類引用超類,并且以關鍵字extends來表示
構造器:對象在加載的一瞬間(new)執行的那個程序塊,那個程序代碼就要構造方法
構造方法(構造器)的特點:沒有返回值;沒有void;和類的名字相同
1.類建立好以后,虛擬機會給我們建立一個默認構造器
2.構造器不能被繼承(可以被調用);
3.當new一個子類對象的時候? 會先調用父類的構造器再調用子類的構造器;
4.在調用默認構造器時可以使用? 【new? 方法名();】即可
*如果重載了構造器,最好把默認的構造器給彌補上? ,如果自己寫了一個帶有參數的構造器,那么這個構造器就會把那個默認的沒有任何參數的構造器給覆蓋了
如:A a = new A();
a----就是對象的句柄
重寫toString()方法:
public String toString(){
return "123";
}
在輸出時用a.toString()
5.構造函數中經常用的super
1)調用父類的方法
2)調用父類的屬性
3)調用父類的構造方法
? ? ?1>.子類構造的過程中一定會調用父類的構造方法
? ? ?2>.super(多個參數)調用父類的構造方法
? ? ?3>.如果子類的構造方法沒有顯示的調用父類的構造方法 那默認調用父類無參數的構造方法
? ? ?4>.如果子類的構造方法沒有顯示的調用父類的構造方法,父類無參數的構造方法還沒有提供那么編譯就會出錯
重寫概念:發生在子類和超類之間,子類覆蓋父類的方法
1、屬性不能被覆蓋和重載
2.父類的引用指向子類的實例,子類如果覆蓋父類的方法。最后調用的是子類的方法
叫做虛方法;整個調用的過程就成為動態綁定的過程;
3.覆蓋方法時,訪問的權限不能降低
4.重寫的規則:方法名,方法參數(個數,類型,順序),返回值一樣
重載概念:要在同一個類中,方法名一致,方法參數的個數不同或者參數的類型不同
抽象類 :abstract修飾的方法? 稱為抽象方法
1.抽象方法不能有方法體
2.如果一個類里邊有一個抽象方法那么這個類要聲明為抽象類
3.如果子類繼承自一個抽象類 那么就要實現這個抽象類里定義的所有抽象方法
或者把父類的抽象方法在子類中依舊聲明為抽象的方法 子類聲明為抽象類
4.抽象類里可以沒有抽象方法
5.抽象類不能實例化對象
接口 inferface修飾的方法稱為接口
Java是單繼承(只能繼承一個父類)??梢远鄬崿F(可以繼承多個接口)?。。。。?!
1.接口里的方法都是抽象方法
void run();? 相當于 public abstract void run();
2.接口里的屬性都是靜態屬性
int id=100;? 相當于? public static final int id=100;
3.如果一個類實現接口 就要實現接口里所有沒有實現的抽象方法,也可以把這個類聲明成abstrcat不實現其中的接口
實現使用的關鍵字: implements
4.接口不能實例化對象
5.接口 new實現類? 也是多態的表現 和父類的引用指向子類的實例是類似的
6.軟件開發過程中:接口的制定者 接口的實現者 接口的使用者? 三者分開
7.多個無關的類可以實現同一個接口
8.一個接口可以繼承其他接口 同時也就繼承了其他接口的方法
9一個類可以實現無關多個接口? 在某種程度上實現的多繼承
最后溫馨提示;慎用繼承
1、父類變,子類就必須變。
2、繼承破壞了封裝,對于父類而言,它的實現細節對與子類來說都是透明的。
3、繼承是一種強耦合關系。