什麼是抽象類
用abstract關鍵字修飾的類就是抽象類
注意點
- 抽象類和抽象方法都需要用 abstract關鍵字修飾
- 抽象類中可能沒有抽象方法 但是抽象方法一定在抽象類中
- 抽象類不能被執行個體化 但有構造函數
- 抽象類用于繼承 子類必須全部實作抽象類提供的抽象方法(抽象類是一個規範 一條規矩 必須遵守)
- 抽象方法隻需要聲明而不需要實作
抽象類的意義
class Person {
public void run() { … }
}
class Student extends Person {
@Override
public void run() { … }
}
class Teacher extends Person {
@Override
public void run() { … }
}
如果說父類(Person)本身不需要實作任何功能 僅僅是為了定義方法簽名 讓子類去覆寫
那麼 可以把父類定義為抽象類
public abstract class Person {
public abstract void getIncome();
}
示例
抽象類
package com.oop.demo11;
// 定義一個抽象類
// 相當于 規範 規矩
/**
* 不能被執行個體化
* 被abstract修飾的方法就是抽象方法
* 抽象類用于繼承 子類必須全部實作父類的方法 抽象類是一個規範 一條規矩 必須遵守
* 抽象類中可能沒有抽象方法 但是抽象方法一定在抽象類中
*/
public abstract class Income {
public abstract void getIncome();
}
子類
package com.oop.demo11;
public class Saray extends Income {
@Override
public void getIncome() {
System.out.println("繼承了Income抽象類方法");
}
}
測試
package com.oop;
import com.oop.demo11.Saray;
public class Applcation {
public static void main(String[] args) {
Saray saray = new Saray();
saray.getIncome();
}
}
輸出
小結
- 通過abstract定義的方法是抽象方法 它隻有定義 沒有實作 抽象方法定義了子類必須實作的接口規範
- 從抽象類繼承的子類必須實作 全部方法
即使再小的帆也能遠航