java類的繼承

1.類的繼承格式
class 父類 // 定義父類
{
}
class 子類 extends 父類 // 用 extends 關鍵字實現類的繼承
{


}


2. super 主要的功能是完成子類調用父類中的內容,也就是調用父類中的屬性或方法。用 super 調用父類中的構造方法,只能放在程序的第一行。
  super 關鍵字不僅可以調用父類中的構造方法,也可以調用父類中的屬性或方法.
 super 調用屬性或方法
    super. 父類中的屬性 ;
    super. 父類中的方法() ;


3.方法的複寫
class Super
{
訪問權限 方法返回值類型 方法 1(參數 1)
{}
}
class Sub extends Super
{
訪問權限 方法返回值類型 方法 1(參數 1) //複寫父類中的方法
 {}
}


4.子類複寫父類中的方法時,被子類複寫的方法不能擁有比父類中更嚴格的訪問權
限;


5.this 與 super 的比較
   this
  (1)表示當前對象
   (2) 調用本類中的方法或屬性  
   (3) 調用本類中的構造方法時,放在程序首行
   super  
  (1)子類調用父類的方法或屬性
  (2)調用父類中構造方法時,放在程序首行
讀者從上表中不難發現,用 super 或 this 調用構造方法時都需要放在首
行,所以,super 與 this 調用構造方法的操作是不能同時出現的。


6.抽象類定義規則
· 抽象類和抽象方法都必須用 abstract 關鍵字來修飾。
· 抽象類不能被實例化,也就是不能用 new 關鍵字去產生對象。
· 抽象方法只需聲明,而不需實現。
· 含有抽象方法的類必須被聲明爲抽象類,抽象類的子類必須複寫所有的抽象方法後才能被實例化,否則這個子類還是個抽象類。


7.抽象類的定義格式
abstract class 類名稱 // 定義抽象類
{
聲明數據成員 ;
訪問權限 返回值的數據類型 方法名稱(參數…)
{
… 定義一般方法
}
abstract 返回值的數據類型 方法名稱(參數…) ;
// 定義抽象方法,在抽象方法裏,沒有定義方法體
}
在抽象類定義的語法中,方法的定義可分爲兩種:一種是一般的方法,它和
先前介紹過的方法沒有什麼兩樣;另一種是“抽象方法” ,它是以 abstract 關鍵字爲開頭的方法,此方法只聲明瞭返回值的數據類型、方法名稱與所需的參數,
但沒有定義方法體。


8.在 Java 中聲明類、屬性和方法時,可使用關鍵字 final 來修飾。
    (1) final 標記的類不能被繼承。
    (2) final 標記的方法不能被子類複寫。
    (3) final 標記的變量(成員變量或局部變量)即爲常量,只能賦值一次。


9.(1) 接口裏的“抽象方法”只要做聲明即可,而不用定義其處理的方式;  
  (2) 數據成員必須賦初值,這樣就可以了。


10.接口的定義格式
interface 接口名稱 // 定義抽象類
{
final 數據類型 成員名稱 = 常量 ; // 數據成員必須賦初值
abstract 返回值的數據類型 方法名稱(參數…) ;
// 抽象方法,注意在抽象方法裏,沒有定義方法主體。
}


11.接口的實現
class 類名稱 implements 接口 A,接口 B // 接口的實現
{

}


12.接口的擴展(或繼承)也是通過關鍵字 extends 來實現的。有趣的是,
一個接口可以繼承多個接口,這點與類的繼承有所不同。格式是接口擴展的語法:
接口的擴展
interface 子接口名稱 extends 父接口 1,父接口 2,…
{
   ......
}


13.因爲父類對象並非由其本身的類實例化,而是通過子類實例化,這就是所謂的對象的多態性,即子類實例化對象可以轉換爲父類實例化對象。
     一、向上轉型可以自動完成;
     二、向下轉型必須進行強制類型轉換。並非全部的父類對象都可以強制轉換爲子類對象。


14.可以用 instanceof 判斷一個類是否實現了某個接口,也可以用它來判斷一個實例對象是否屬於一個類。instanceof 的語法格式爲:
對象 instanceof 類(或接口)
它的返回值是布爾型的,或真(true)、或假(false)。


15.接口是可以被實例化的,但是不能被直接實例化,只能通過其子類進行實例化。


16.1、通過 extends 關鍵字,可將父類的成員(包含數據成員與方法)繼承到子類。


2、 Java 在執行子類的構造方法之前,會先調用父類中無參的構造方法,其目的是爲了對繼承自父類的成員做初始化的操作。


3、 父類有數個構造方法時,如要調用特定的構造方法,則可在子類的構造方法中,通過 super()這個關鍵字來完成。


4、 this()是在同一類內調用其它的構造方法, 而 super()則是從子類的構造方法調用其父類的構造方法。


5、 this()除了可用來調用同一類內的其它構造方法之外,如果同一類內“實例變量”與局部(local)變量的名稱相同時,也可利用它來調用同一類內的“實例變量” 。


6、 this()與 super()其相似之處: (1)當構造方法有重載時,兩者均會根據所給予的參數的類型與個數,正確地執行相對應的構造方法。 (2)兩者均必須編寫在構造方法內的第一行, 也正是這個原因, this()與 super()無法同時存在同一個構造方法內。


7、 “重載” (overloading) ,它是指在相同類內,定義名稱相同,但參數個數或類型不同的方法,因此 Java 便可依據參數的個數或類型調用相應的方法。


8、 “複寫” (overriding) ,它是在子類當中,定義名稱、參數個數與類型均與父類相同的方法,用以複寫父類裏的方法。


9、 如果父類的方法不希望子類的方法來複寫它,可在父類的方法之前加上“final”關鍵字,如此該方法便不會被複寫。


10、final 的另一個功用是把它加在數據成員變量前面,如此該變量就變成了一個常量(constant) ,如此便無法在程序代碼中再做修改了。


11、所有的類均繼承自 Object 類。


12、複寫 Object 類中的 equals() method 可用來比較兩個類的對象是否相等。


13、Java 可以創建抽象類,專門用來當做父類。抽象類的作用類似於“模板” ,其目的是依據其格式來修改並創建新的類。


14、抽象類的方法可分爲兩種:一種是一般的方法,另一種是以 abstract 關鍵字開頭的“抽象方法” 。 “抽象方法”並沒有定義方法體,而是要保留給由抽象類派生出的新類來定義。


15、利用父類的變量數組來訪問子類的內容的較好的做法是:
(1) 先創建父類的變量數組;
(2) 利用數組元素創建子類的對象,並以它來訪問子類的內容。


16、抽象類不能直接用來產生對象

17、接口的結構和抽象類非常相似,它也具有數據成員與抽象 method,但它與抽象類有兩點不同: (1) 、接口的數據成員必須初始化。 (2) 、接口裏的方法必須全部都聲明成 abstract。


18、利用接口的特性來打造一個新的類,稱爲接口的實現(implementation) 。


19、Java 並不允許多重繼承。


20、接口與一般類一樣,均可通過擴展的技術來派生出新的接口。原來的接口稱爲基本接口或父接口;派生出的接口成爲派生接口或子接口。通過這種機制,派生接
口不僅可以保留父接口的成員,同時也可以加入新的成員以滿足實際的需要。


21、Java 對象的多態性分爲:向上轉型(自動) 、向下轉型(強制) 。


22、通過 instanceof 關鍵字,可以判斷對象屬於那個類。


23、匿名內部類(anonymous inner class)的好處是可利用內部類創建不具有名稱的對象,並利用它訪問到類裏的成員。

發佈了29 篇原創文章 · 獲贊 17 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章