Java基礎|抽象類和抽象方法

抽象的概念

  • 舉個例子,動物都有喫東西這個行爲,但是你能直接說動物喫什麼東西嗎?肯定不能,因爲動物喫東西是個抽象的概念,它抽象出了動物的共有行爲。我們只能說狗喫骨頭,貓喫魚,必須具體到某種動物上才能說出它喫什麼。

抽象方法和抽象類

  • 在 Java 中,提供了抽象方法和抽象類來抽取子類共有的行爲。在抽象類中,我們只是聲明一個抽象方法,但是方法具體的實現邏輯需要交由子類去實現(覆蓋重寫)。
//使用 abstract 關鍵字修飾類
public abstract class Animal {
	//使用 abstract 關鍵字修飾方法
    public abstract void eat();
}

public class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("狗喫骨頭");
    }
}

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("貓喫魚");
    }
}

注意事項

  1. 有抽象方法的類必須是抽象類,抽象類中可以不寫抽象方法。
  2. 不能直接 new 抽象類對象。 Animal animal = new Animal錯誤寫法。原因就是我們創建抽象類對象根本原因是想要調用抽象方法,但是抽象類中的抽象方法並沒有方法體的實現,所以沒意義。因此需要new 抽象類的非抽象子類對象。
  3. 需要子類繼承抽象父類。非抽象子類必須覆蓋重寫抽象父類的全部抽象方法。抽象子類可以覆蓋重寫一部分抽象方法,另一部分抽象方法交給抽象子類的子類去覆蓋重寫。
  4. 抽象類中,可以有構造方法,是供子類創建對象時,初始化父類成員使用的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章