1. 程式人生 > 實用技巧 >JAVA基礎-繼承機制

JAVA基礎-繼承機制

需要掌握的知識點:

  1. 包的使用
  2. 繼承時,子類如何覆蓋父類方法(重寫和過載)
  3. 繼承時,構造方法的執行過程
  4. JVM中子類如何例項化(先例項化父,再例項化子)
  5. super和this關鍵字
  6. 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類

//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+/可以快速重構父類函式)
  • 子類方法的訪問許可權只能大於等於父類
  • 子類方法丟擲的異常不能大於父類被重寫的異常

物件的建立過程

  1. JVM會先載入父類,再載入子類
  2. 在棧記憶體中為定義的變數分配記憶體空間,同時在堆記憶體中為真正的物件分配記憶體空間
  3. 呼叫構造器來為創建出的物件進行初始化
    1. 子類中所有的構造方法,預設都會先呼叫父類中無參的構造方法 (如果父類中沒有無參的構造方法,那麼在子類中要利用super手動新增一個父類的有參構造方法)
    2. Object類的構造器是最先被執行的

final 關鍵字

  1. final修飾類表示該類不能被繼承

    比如String類就是這種情況

  2. final修飾變數

    1. 表示該變數只能被賦值一次
    2. 成員變數、區域性變數都可以使用final修飾(其中成員變數必須在宣告時賦值或者通過構造方法賦值,變成一個常量。區域性變數可以不在宣告的時候賦值,但是也只能賦值一次)
    3. 必須手工為變數賦值一次(包括成員變數,如果賦預設值,沒有任何意義)
  3. final修飾方法表示該方法不能被子類重寫