抽象類和抽象方法


概述

用於描述一個模糊的特征。有時一個類中的一些方法細節不確定,我們就可以用抽象的概念去定義。

定義格式

使用abstract關鍵字修飾

//定義抽象類Person
abstract class Person {
    //定義抽象方法sleep
    abstract void sleep();
}

抽象方法定義注意事項

  1. 抽象方法沒有方法體,定義時沒有"{}",小括號后直接跟";"。
  2. 一個類中含有抽象方法,該類必須為抽象類。
  3. 抽象類中可以不定義任何抽象方法。

抽象類和普通類的區別:

  1. 抽象類必須使用public修飾(如果被final、private修飾,子類無法繼承,也就無法實現抽象方法)。
  2. 抽象類默認權限修飾符為public。
  3. 抽象類不可以使用new關鍵字創建對象,但子類創建對象時,抽象父類也會被JVM實例化。
  4. 抽象父類的子類,必須重寫所有抽象方法。如果抽象類的子類含有未實現的抽象方法,子類也必須為抽象類。
  5. 抽象類也可以有構造方法,與普通父類一樣,當子類實例化時被調用。

用代碼展示一個例子:
創建抽象類,包含一個抽象方法和普通方法。

abstract class Person {
    public abstract void sleep();
    public void eat(){
        System.out.println("要吃飯...");
    }
}

創建類繼承抽象類,抽象類中的非抽象方法可以不重寫。

 public class Student extends Person{
    String name;

     public Student(){}

     public Student(String name){
        this.name = name;
    }

     public void sleep(){
        System.out.println(name+"要睡覺..");
    }//注意,抽象類的子類必須重寫抽象類中的抽象方法

}

抽象類不能被實例化,要想調用抽象類中的方法必須創建抽象類的子類
程序入口代碼如下:

    public static void main(String[] args) {
        Student stu1 = new Student("熊大");
        stu1.eat();
        stu1.sleep();
    }

運行結果如下:

要吃飯...
熊大要睡覺..

可以看出,通過實例化子類,子類對象可以直接調用抽象父類的普通方法,也可以調用抽象父類中重寫的抽象方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM