1、方法的重寫
與重載區分:
重載(overload):參數的個數或者類型不一樣。
重寫(overwrite)、(override):
(1)適用范圍:子類根據需要從基類中繼承來的方法進行重寫。
(2)重寫的方法必須和被重寫的方法具有相同的方法名稱、參數列表以及返回 類型。
(3)重寫的方法不能使用比被重寫的方法的有更嚴格的訪問權限。
2、用super來引用當前對象的父類對象的引用。
而this則是對當前對象的引用。
圖片左邊是堆內存,右邊是棧內存。
3、繼承中的構造方法
(1)子類必須調用父類的構造方法。
(2)子類可以在自己的構造方法中使用super(argument_list)調用基類的構造方法。
其中調用super(argument_list)必須寫下子類構造方法的第一行。
也可以使用this(argument_list)調用本類另外的構造方法。
(3)如果子類的構造方法中沒有顯示地調用基類的構造方法,則系統默認調用基類的無參數的構造方法。
(4)如果子類的構造的方法既沒有顯示調用父類的構造方法,而基類中又沒有無參的構造方法,則編譯出錯。
4、JDK_API的查詢方法
可以去http://java.sun.com/里面的java SE里面下載一些文檔(、documentation)
5、java里面的Object類
(1)Object類是所有java類的根基類。
(2)如果在類中聲明沒有使用extends關鍵字指明其基類,則默認類為Object。
(3)Class Object里面的toString()
可以進行重寫。
6、hashcode的簡單解釋
(1)簡單解釋:從java虛擬機看:每一個對象都有它獨一無二的哈希編碼。可以通過哈希編碼找到其位置。
7、Object類里面的equals方法
(1)提供定義對象是否“相等”的邏輯、
(2) 默認的定義是兩個對象的引用是否相等。
(3)重寫里面的equals()
public boolean equals(Object obj) {
if(obj == null) {
return false;
}
else {
if(obj instanceof Cat) {
Cat c = (Cat)obj;
if(c.color == this.color && c.height == this.height && c.weight == this.weight) {
return true;
}
}
}
return false;
}
8、對象的轉型
(1)一個基類的引用類型變量可以指向其子類的對象。
(2)一個基類的引用不可以訪問其子類對象新增加的成員(屬性和方法)
(3)可以用 引用對象 instanceof 類名【例如:obj instanceof Cat】來判斷該引用型變量“指向的”對象是否就是該類或者該類的子類。
(4)子類的對象可以當做基類的對象來使用稱作向上轉型,反之則稱為向下轉型。
9、多態(動態綁定、持綁定)【Polymoph】
多態能夠使程序的擴展性達到最好。具體指的是“在執行期間(而非編譯期間)判斷所引用對象的實際類型,根據其實際類型調用其相應的方法?!?br>
使用多態的條件:
(1)要有繼承關系
(2)要有重寫
(3)父類引用指向子類對象
10、abstract
因為多態,父類被重寫的方法可以不被實現。所以可以不寫。
例如
public abstract void print();
要點:
(1)用abstract關鍵字來修飾一個類時,這個叫做抽象類。用abstract修飾的方法叫做抽象方法。
(2)抽象類不能被實例化。
(3)含有抽象方法的類必須是抽象類,抽象類必須被集成,抽象方法必須被重寫。
(4)抽象方法只需被聲明,不需被實現。實現是在子類重寫時實現的。
11、final關鍵字
(1)final的變量(包含局部變量以及成員變量)的值不能被改變
(2)final的方法不能夠被重寫
(3)final的類不能夠被繼承
12、接口(interface)