JAVA基礎-繼承機制
阿新 • • 發佈:2020-07-03
需要掌握的知識點:
- 包的使用
- 繼承時,子類如何覆蓋父類方法(重寫和過載)
- 繼承時,構造方法的執行過程
- JVM中子類如何例項化(先例項化父,再例項化子)
- super和this關鍵字
- final關鍵字
包的匯入
import java.util.Scanner;
public class PackageTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
sc.nextInt();
}
}
Object類是所有類的鼻祖
當沒有任何顯示的繼承類時,預設繼承java.lang
//object原始碼中一些比較常用的方法 public boolean equals(Object obj) { //引用比較
return (this == obj);
} //返回類名加hashcode
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
} public final native Class<?> getClass(); //返回類名
訪問修飾符許可權
訪問修飾符 | 同類 | 同包 | 子類 | 其他 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
預設 | √ | √ | ||
private | √ |
其中protected含義是保護繼承的子類,這樣在不同的包中就可以讓子類訪問了。
使用super關鍵字,super代表父類物件
訪問父類構造方法
super();
super(name);
訪問父類屬性
super.age;
super.name;
訪問父類方法
super.print();
總結一下super和this 的區別
---- | ---- | ---- | ---- |
---|---|---|---|
this訪問本類構造方法必須第一行 |
本類屬性 | 本類方法 | this可以引用當前物件 |
super訪問父類構造方法必須第一行 | 父類屬性 | 父類方法 | super只能出現在子類中 |
方法重寫
- 子類方法必須和父類具有相同的方法名稱、引數列表和返回值型別(Eclipse中快捷鍵ALT+/可以快速重構父類函式)
- 子類方法的訪問許可權只能大於等於父類
- 子類方法丟擲的異常不能大於父類被重寫的異常
物件的建立過程
- JVM會先載入父類,再載入子類
- 在棧記憶體中為定義的變數分配記憶體空間,同時在堆記憶體中為真正的物件分配記憶體空間
- 呼叫構造器來為創建出的物件進行初始化
- 子類中所有的構造方法,預設都會先呼叫父類中無參的構造方法 (如果父類中沒有無參的構造方法,那麼在子類中要利用super手動新增一個父類的有參構造方法)
- Object類的構造器是最先被執行的
final 關鍵字
final修飾類表示該類不能被繼承
比如String類就是這種情況final修飾變數
- 表示該變數只能被賦值一次
- 成員變數、區域性變數都可以使用final修飾(其中成員變數必須在宣告時賦值或者通過構造方法賦值,變成一個常量。區域性變數可以不在宣告的時候賦值,但是也只能賦值一次)
- 必須手工為變數賦值一次(包括成員變數,如果賦預設值,沒有任何意義)
final修飾方法表示該方法不能被子類重寫