繼承
繼承格式://宣告在子類上
public class 子類名 extends(繼承單詞) 父類名{ }
注:1.子類繼承父類,可以使用父類所有非私有成員(即沒有被private修飾的),父類絕對不會找子類要東西
2.子類加載優先加載父類
3.單一繼承,多層繼承//子類只能有一個父類,但父類可以有多個子類
還有:java中的類在沒有繼承的情況下都是默認繼承Object類
Object :根類,超類,基類
java中所有的類都直接或間接的繼承Object.
父類格式:就是普通類格式
public class Fu{ //子類們的共性 }
繼承關系下成員變數的訪問特點:
遵循原則 變數訪問的就近原則
1. 子類可以使用父類所有非私有的成員變數
2. 父類不能訪問子類的成員變數/方法
3. 子類自己有優先訪問自己的變數
承關系下成員方法的訪問特點:
1. 在本類中呼叫方法,自己有就調自己的,自己沒有找父類要
2. 在外部呼叫,有方法的重寫,子類優先呼叫自己重寫的方法
方法重寫:
方法的多載:OverLoad
在同一個類中,方法名相同,形參串列不同(型別,個數,型別順序),與回傳值無關
方法的重寫: Override 覆寫
1. 必須有繼承關系
2. 子類方法和父類方法宣告完全一致
(權限修飾符: 子類的重寫方法權限修飾符 >= 父類該方法)
public > protected > 不寫 > private
@Override :可以幫助程式員約束重寫方法的格式
寫在重寫方法的宣告上面
繼承關系下構造方法的訪問特點
繼承關系下構造方法的訪問特點: 先加載父類,后加載子類
構造方法的秘密:
在每一個構造方法的第一行代碼中隱藏著一句 super();不寫也有!
super(); 在呼叫父類的無參構造方法
為什么系統會送你一個無參的super();??
因為Object中只有無參構造方法.
super()的注意事項:
1.super()必須是構造方法的第一行代碼,原因是怕你在父類沒有加載的時候訪問父類成員
2.super(實際引數): 呼叫父類的有參構造方法
3.若你呼叫了其他的構造方法默認贈送的super()就不送了
4.一個構造方法中只能有呼叫一次其他的構造方法
this()/this(實際引數):呼叫本類的無參構造方法/含參構造方法
super和this
this:本類物件的參考
super:本類物件的父參考
//this,super 不是真實存在的物件
//當有物件呼叫對應的含有this,super關鍵字的方法時,this和super才指向具體的物件
//this和super不可以存在static修飾的方法內
this.變數名 -> 強制訪問本類成員位置上的變數
this.方法名(實際引數) -> 強制訪問本類成員位置上的方法 // 不會這么寫,因為所有的方法都是成員方法
this() -> 呼叫本類的無參構造方法
this(實際引數) -> 呼叫本類的含參構造方法
super.變數名 -> 強制訪問本類父類成員位置上的變數
super.方法名(實際引數) -> 強制訪問本類父類成員位置上的方法 //會用! 若在本類中要訪問父類成員方法
super() -> 呼叫本類父類的無參構造方法 // 默認存在
super(實際引數) -> 呼叫本類父類的含參構造方法
九陽神功
前提: 你只要看到物件調 ---> 物件名.
1. 找到物件創建的陳述句
2. 看物件在干嘛
物件調成員變數: 編譯看左邊,運行看左邊
//編譯看左邊: 調錯-->若創建物件左邊的類中沒有這個變數就直接報錯
//運行看左邊: 說結果 --> 創建物件左邊的類中此變數的值是多少就是多少
物件調成員方法: 編譯看左邊,運行看右邊
//編譯看左邊: 調錯-->若創建物件左邊的類中沒有這個方法就直接報錯
//運行看右邊: 說結果 --> 創建物件右邊的類中方法是什么就執行哪個方法
物件調靜態方法: 編譯看左邊,運行看左邊
//編譯看左邊: 調錯-->若創建物件左邊的類中沒有這個方法就直接報錯
//運行看左邊: 說結果 --> 創建物件左邊的類中方法是什么就執行哪個方法
static修飾的方法沒有重寫概念!! why -> static修飾的成員屬于類!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299438.html
標籤:其他
上一篇:對于面向物件中的面試問題的總結
下一篇:Git配置多個多個賬號
