中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AJPFX總結面向對象特征之一的繼承知識

發布時間:2020-08-17 12:16:10 來源:ITPUB博客 閱讀:157 作者:AJPFX 欄目:編程語言
繼 承 (面向對象特征之一)
好處:
1:提高了代碼的復用性。
2:讓類與類之間產生了關系,提供了另一個特征多態的前提。
 
父類的由來:其實是由多個類不斷向上抽取共性內容而來的。
java中對于繼承,java只支持單繼承。java雖然不直接支持多繼承,但是保留了這種多繼承機制,進行改良。
 
單繼承:一個類只能有一個父類。
多繼承:一個類可以有多個父類。
 
為什么不支持多繼承呢?
因為當一個類同時繼承兩個父類時,兩個父類中有相同的功能,那么子類對象調用該功能時,運行哪一個呢?因為父類中的方法中存在方法體。
但是java支持多重繼承。A繼承B  B繼承C  C繼承D。
多重繼承的出現,就有了繼承體系。體系中的頂層父類是通過不斷向上抽取而來的。它里面定義的該體系最基本最共性內容的功能。
所以,一個體系要想被使用,直接查閱該系統中的父類的功能即可知道該體系的基本用法。那么想要使用一個體系時,需要建立對象。建議建立最子類對象,因為最子類不僅可以使用父類中的功能。還可以使用子類特有的一些功能。
 
簡單說:對于一個繼承體系的使用,查閱頂層父類中的內容,創建最底層子類的對象。
 
子父類出現后,類中的成員都有了哪些特點:
1:成員變量。
         當子父類中出現一樣的屬性時,子類類型的對象,調用該屬性,值是子類的屬性值。
         如果想要調用父類中的屬性值,需要使用一個關鍵字: super
          T his: 代表是本類類型的對象引用。
          S uper: 代表是子類所屬的父類中的內存空間引用。
         注意:子父類中通常是不會出現同名成員變量的,因為父類中只要定義了,子類就不用在定義了,直接繼承過來用就可以了。
2:成員函數。
當子父類中出現了一模一樣的方法時,建立子類對象會運行子類中的方法。好像父類中的方法被覆蓋掉一樣。所以這種情況,是函數的另一個特性: 覆蓋 (復寫,重寫)
什么時候使用覆蓋呢?當一個類的功能內容需要修改時,可以通過覆蓋來實現。
3:構造函數。
發現子類構造函數運行時,先運行了父類的構造函數。為什么呢?
原因: 子類的所有構造函數中的第一行,其實都有一條隱身的語句super();
super(): 表示父類的構造函數,并會調用于參數相對應的父類中的構造函數。而super():是在調用父類中空參數的構造函數。
為什么子類對象初始化時,都需要調用父類中的函數?(為什么要在子類構造函數的第一行加入這個super()?)
因為子類繼承父類,會繼承到父類中的數據,所以必須要看父類是如何對自己的數據進行初始化的。所以子類在進行對象初始化時,先調用父類的構造函數,這就是子類的實例化過程。
 
注意: 子類中所有的構造函數都會默認訪問父類中的空參數的構造函數,因為每一個子類構造內第一行都有默認的語句super();
如果父類中沒有空參數的構造函數,那么子類的構造函數內,必須通過super語句指定要訪問的父類中的構造函數。
如果子類構造函數中用this來指定調用子類自己的構造函數,那么被調用的構造函數也一樣會訪問父類中的構造函數
 
問題:super()和this()是否可以同時出現的構造函數中。
兩個語句只能有一個定義在第一行,所以只能出現其中一個。
 
super()或者this():為什么一定要定義在第一行?
因為super()或者this()都是調用構造函數,構造函數用于初始化,所以初始化的動作要先完成。
 
繼承的細節:
什么時候使用繼承呢?
當類與類之間存在著所屬關系時,才具備了繼承的前提。a是b中的一種。a繼承b。狼是犬科中的一種。
英文書中,所屬關系:" is a "
注意:不要僅僅為了獲取其他類中的已有成員進行繼承。
 
所以判斷所屬關系,可以簡單看,如果繼承后,被繼承的類中的功能,都可以被該子類所具備,那么繼承成立。如果不是,不可以繼承。
 
細節二:
在方法覆蓋時,注意兩點:
1:子類覆蓋父類時,必須要保證,子類方法的權限必須大于等于父類方法權限可以實現繼承。否則,編譯失敗。
2:覆蓋時,要么都靜態,要么都不靜態。 (靜態只能覆蓋靜態,或者被靜態覆蓋)
 
繼承的一個弊端:打破了封裝性。對于一些類,或者類中的功能,是需要被繼承,或者復寫的。
這時如何解決問題呢?介紹一個關鍵字,final:最終。
 
final特點:
1:這個關鍵字是一個修飾符,可以修飾類,方法,變量。
2:被final修飾的類是一個最終類,不可以被繼承。
3:被final修飾的方法是一個最終方法,不可以被覆蓋。
4:被final修飾的變量是一個常量,只能賦值一次。
 
        其實這樣的原因的就是給一些固定的數據起個閱讀性較強的名稱。
        不加final修飾不是也可以使用嗎?那么這個值是一個變量,是可以更改的。加了final,程序更為嚴謹。常量名稱定義時,有規范,所有字母都大寫,如果由多個單詞組成,中間用 _ 連接。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德钦县| 桑日县| 民乐县| 广汉市| 吉隆县| 常宁市| 定南县| 扶余县| 海盐县| 台湾省| 锦屏县| 鄂州市| 牡丹江市| 阿坝| 明溪县| 三河市| 石棉县| 怀仁县| 丹江口市| 陵川县| 七台河市| 沅江市| 伊宁县| 托克托县| 上蔡县| 万盛区| 宣武区| 九江市| 长丰县| 界首市| 西藏| 双柏县| 贡觉县| 双流县| 淮阳县| 邳州市| 偏关县| 安塞县| 夏邑县| 若羌县| 綦江县|