1窟勃、方法的重寫
與重載區(qū)分:
重載(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像吻、多態(tài)(動態(tài)綁定沟娱、持綁定)【Polymoph】
多態(tài)能夠使程序的擴展性達到最好翩剪。具體指的是“在執(zhí)行期間(而非編譯期間)判斷所引用對象的實際類型官还,根據其實際類型調用其相應的方法饶氏。”
使用多態(tài)的條件:
(1)要有繼承關系
(2)要有重寫
(3)父類引用指向子類對象
10芦鳍、abstract
因為多態(tài)嚷往,父類被重寫的方法可以不被實現葛账。所以可以不寫柠衅。
例如
public abstract void print();
要點:
(1)用abstract關鍵字來修飾一個類時,這個叫做抽象類籍琳。用abstract修飾的方法叫做抽象方法菲宴。
(2)抽象類不能被實例化。
(3)含有抽象方法的類必須是抽象類趋急,抽象類必須被集成喝峦,抽象方法必須被重寫。
(4)抽象方法只需被聲明呜达,不需被實現谣蠢。實現是在子類重寫時實現的。
11查近、final關鍵字
(1)final的變量(包含局部變量以及成員變量)的值不能被改變
(2)final的方法不能夠被重寫
(3)final的類不能夠被繼承
12眉踱、接口(interface)