1.覆蓋:(只能存在於子類繼承父類中)
子類覆蓋父類,必須保證子類許可權大於等於父類許可權,才可以覆蓋,否則編譯失敗
靜態只能覆蓋靜態
易混淆:過載:只看同名函式的引數列表
重寫:子父類方法要一模一樣
2.子父類中的建構函式:
在對子類物件初始化時,父類的建構函式也會執行,因為子類的構造預設第一行有一條隱式的語句super()
super():會訪問父類中哦個你空引數的建構函式。而且子類中所有的建構函式預設第一行都是super();
為什麼子類一定要訪問父類中的建構函式
因為父類中的資料子類可以直接獲取。所以子類物件在建立是,需要先檢視父類是如何對這些資料進行初始化的。所以子類在物件初始化時,要先訪問一下父類中的建構函式。
如果要訪問父類中制定的建構函式,可以通過手動定義super語句的方式來指定。
補充:super語句一定定義在子類建構函式的第一行。
結論:子類的所有的建構函式,預設都會訪問父類中空引數的建構函式。
因為子類每乙個建構函式內的第一行都有乙個隱式super()
當父類中沒有空引數的建構函式時,子類必須手動通過super或者this語句形式來指定要訪問的父類建構函式
子類中的建構函式第一行也可以手動制定this語句來訪問本類中的建構函式。子類中至少會有乙個建構函式會訪問父類中的建構函式
2.final關鍵字
final可以修飾類,函式。變數
被final修飾的類不可一被繼承
被final修飾的方法不可以被覆寫
被final修飾的變數是乙個常量只能賦值一次,既可以修飾成員變數,又可以修飾區域性變數
當在描述事物時,一些資料的出現值是固定的,那麼這時為了增強閱讀性,都給這個值七個名字。方便於閱讀。
當這個值不需要改變,所以加上dinal修飾。作為常量:常量的書寫規範所有字母都大寫,如果有多個單詞組成,單詞間通過_連線。
3.abstract關鍵字(抽象大白話:看不懂)
使用原因:
當多個類中出現相同功能,但是功能主體不同,這還可以向上抽取。這時,只抽取功能定義,而不抽取功能主體
抽象累得特點:
抽象方法一定在抽象類中。
抽象方法和抽象類都必須被abstract關鍵字修飾。
抽象類不可以用new建立物件,因為呼叫抽象方法沒有意義
抽象類中的抽象方法要被使用,必須由子類覆寫所有的抽象方法後,建立子類物件呼叫
補充:如果子類只覆蓋了部分抽象方法,那麼蓋子類還是乙個抽象類
抽象類和一般類沒有太大的區別,只不過,該事物中出現了一些看不懂的東西,這些不缺定的部分,也是該事物的功能,需要名曲出現。但是無法定義主體
抽象模擬一般類多了個抽象函式。就是在類中可以定義抽象方法。
抽象類不可以例項化
特殊:抽象類中可以不定義抽象方法,這樣做僅僅是不讓該類建立物件。
模板方法:
在定義功能時,功能的一部分是確定的,但是有一部分是不確定的,而確定的部分在使用不確定的部分。那麼這時就將不確定的部分暴露出去,有該類的子類去完成
4.介面(可以理解成是乙個特殊的抽象類,)
當抽象類中的所有方法都是抽象的,那麼該類可以通過介面來表示。
介面定義時,格式特點:
常量:public static final(定義時不加,系統會自動加上)
方法:public abstract
::介面中的成員都是public的
介面:是不可以建立物件的,因為有抽象方法
需要被子類實現,子類對介面中的抽象方法全都覆蓋後,子類才可以例項化,否則子類是乙個抽象類。
介面可以被類多實現(即:乙個類可實現多個介面,也是對多繼承不支援的轉換形式)
介面與介面之間是繼承的關係,可以是多繼承
黑馬程式設計師 繼承
asp.net android io開發s net培訓 期待與您交流!c 的繼承與 c 等語言乙個重要的不同,就是只能從乙個類中繼承,這是開發者在權衡了從多個類c 繼承的優勢與劣勢作出的結果。不過,可以從介面繼承。另外,繼承可傳遞。建構函式和析構函式不能被繼承。c 繼承中的重寫 1 virtual ...
黑馬程式設計師 繼承
乙個類宣告的基類說明中只能有乙個單獨的類,單繼承性 雖然類只能直接繼承乙個基類,但繼承的層次沒有限制 隱藏基類的成員 1.宣告乙個新的相同型別的成員,並使用相同的名稱 不包括返回型別 2.要讓編譯器知道你在故意隱藏繼承的成員,使用 new修飾符 基類訪問 可以使用基類訪問表示式訪問隱藏的基類成員 基...
黑馬程式設計師 繼承
黑馬程式設計師 繼承 一 黑馬程式設計師 繼承1基本使用 import animal的宣告 inte ce animal nsobject void setage int age int age void setweigth double weight double weight end anima...