對於面向對象的程序設計而言,每一個程序員都應該去了解Java中的封裝,繼承和多態,那麼我今天來說的主要是以繼承為核心的主題。
一.關於對繼承的理解。
繼承是面向對象的三大特性之一,是java中實現代碼重用的重要手段之一。Java中所有的類都是通過直接或間接地繼承java.lang.Object類得到的。繼承而得到的類稱為子類,被繼承的類稱為父類。子類不能繼承父類中訪問權限為private的成員變量和方法。子類可以重寫父類的方法,及命名與父類同名的成員變量。但Java不支持多重繼承,即一個類從多個超類派生的能力。
二.Java中繼承的語法
修飾符 Dog extends Animal
{
//類定義部分
}
繼承通過extends關鍵字來實現的,其中Dog稱為子類,Animal稱為父類,(基類或超類)。
三.子類可以繼承到父類的哪些東西。
01.繼承public和protected修飾的屬性和方法,無論子類和父類是否在同一個包中。
02.繼承默認權限修飾符(friendly)修飾的屬性和方法,但子類和父類必須在同一個包中。
03.無法繼承private修飾的屬性和方法。
04.無法繼承父類的構造方法。
四.訪問修飾符訪問權限。
五.子類滿足重寫父類方法的要求。
01.重寫方法和被重寫方法必須具有相同的方法名。
02.重寫方法和被重寫方法必須具有相同的參數列表。
03.重寫方法的返回值類型必須和被重寫方法的返回值類型相同或是其子類。
04.重寫方法不能縮小被重寫方法的訪問權限。
六.重寫方法和重載有什麼區別和聯系。
解析:重載涉及同一個類中的同名方法,要求方法名相同,要求參數列表不同,與返回值類型,訪問修飾符無關,而重寫涉及的是子類和父類之間的同名方法,要求方法名稱相同,參數列表相同,
返回值類型相同,訪問修飾符不能嚴於父類。
七.super關鍵字的用途。
super代表對當前對象的之前直接父類對象的默認引用。在子類中可以通過super關鍵字來訪問分類的成員。
注意點:
01.super必須出現在子類(子類的方法和構造方法)中,而不是其他位置。
02.可以訪問父類的成員,如父類的屬性,方法,構造方法。
03.注意訪問權限的限制,如無法通過super訪問private成員。
八.抽象類
1.對於抽象類的理解:
01.在Java中當一個類被abstract關鍵字修飾時,該類就叫抽象類。
02.抽象類是從多個具體類中抽象出來的父類,屬於高層次的抽象。
注意點:
01抽象類必須使用abstract關鍵字進行修飾。
02抽象類不能被實例化(無法使用new關鍵字創建對象實例)。
03抽象類可以包含屬性,方法,構造方法,初始化塊,內部類,枚舉類。
04含有抽象方法的類必須定義成抽象類。
05.子類必須重寫所有抽象方法才能實例化,否則子類還是一個抽象類。
eg:定義一個抽象類
publiic abstract Class Dog
{
}
2.抽象類中可以有構造方法嗎?
解析:抽象類中可以有構造方法,其構造方法可以被本類的其他構造方法調用,若此構造方法不是有private修飾的,也可以被本類的子類中的構造方法調用。