super:代表父類物件,在繼承中有重要作用
****子類繼承父類,會繼承父類非私有的成員變數和方法。
子類和父類如果成員變數同名,則可以使用super.成員變數加以區分。
fu 類中的成員變數是非私有的,子類中可以直接訪問。若fu 類中的成員變數私有了,子類是不能直接訪問的。通常編碼時,我們遵循封裝的原則,使用private修飾成員變數,那麼如何訪問父類的私有成員變數呢?對!可以在父類中提供公共的get***方法和set***方法
子類和父類如果方法同名,則出現兩種情況:重寫(覆蓋),過載。重寫是父子的方法同名且形參的個數和型別都相同;過載是形參的個數和型別不同。****
「在父子類的繼承關係當中,建立子類物件,訪問成員方法的規則:
建立的物件是誰,就優先用誰,如果沒有則向上找。
注意事項:
無論是成員方法還是成員變數,如果沒有都是向上找父類,絕對不會向下找子類的。
重寫(override)
概念:在繼承關係當中,方法的名稱一樣,引數列表也一樣。
重寫(override):方法的名稱一樣,引數列表【也一樣】。覆蓋、覆寫。
過載(overload):方法的名稱一樣,引數列表【不一樣】。
方法的覆蓋重寫特點:建立的是子類物件,則優先用子類方法。」
**子類的方法覆蓋了父類方法的話,建立的是子類物件,則優先用子類方法。
建立的是父類物件,則用父類方法。
現在子類裡面找,找不到再去父類裡面找,不管是成員變數還是方法都一樣
**重寫注意事項
必須保證父子類之間方法的名稱相同,引數列表也相同。
@override:寫在方法前面,用來檢測是不是有效的正確覆蓋重寫。
這個註解就算不寫,只要滿足要求,也是正確的方法覆蓋重寫。
子類方法的返回值型別必須【小於等於】父類方法的返回值型別(小於其實就是是它的子類)。注意:如果返回值型別是基本資料型別和void,那麼必須是相同
備註:預設不是漢字預設,而是什麼都不寫,留空。
幾種特殊的方法不能被重寫靜態方法不能被重寫
私有等在子類中不可見的方法不能被重寫
final方法不能被重寫
構造方法的名字是與類名一致的。所以子類是無法繼承父類構造方法的
。
繼承中的super使用
繼承中的super使用 特點 1 如果類中不定義 init 呼叫父類 super class的 init 2 如果類繼承父類也需要定義自己的 init 就需要在當前類的 init 呼叫一下父類 init 3 如何呼叫父類 init super init 引數 super 型別,物件 init 引數 ...
繼承 super的講解
super呼叫父類的構造方法,必須在構造方法的第乙個 super必須只能出現在子類的方法或者構造方法中 super和this 不能同時呼叫構造方法 代表的物件不同 this 本身呼叫 用這個物件 super 代表父類物件的應用 前提 this 沒有繼承也可以使用 super 只能在繼承條件才可以使用...
繼承和super的使用及注意
父類package oop.demo06 public class person public void print private修飾的無法被繼承 注意 父類如果沒有無參構造,則子類也不能有無參構造 否則會報錯 子類package oop.demo06 public class student e...