Java 抽象類 abstract


抽象類是指在類中定義方法,但是並不去實現它,而在它的子類中去具體的實現。定義的抽象方法不過是一個方法占位符。繼承抽象類的子類必須實現父類的抽象方法,除非子類也被定義成一個抽象類

 

抽象類定義格式:

修飾符 abstract 類名 {
}

抽象類方法定義格式:

修飾符 abstract 返回值類型 方法名();

注意:抽象類中的方法不一定為抽象方法,但是抽象方法所在的類一定要定義為抽象類。

 

public abstract class Animal {
    abstract void breath();
}

public class Tiger extends Animal {
    void breath() {
        System.out.println("老虎用肺呼吸");
    }
}

public class Fish extends Animal {
    void breath() {
        System.out.println("魚用腮呼吸");
    }
}

public class Test {
    public static void main(String[] args) {
        Tiger tiger = new Tiger();
        Fish fish = new Fish();
        
        tiger.breath();
        fish.breath();
    }
}

 

定義完抽象類后,就可以使用它。但是抽象類和普通類不同,抽象類不可以實例化,是無法通過編譯的,但是可以創建抽象類的對象變量,只是這個變量只能用來指向它的非抽象子類對象。

public static void main(String[] args) {
        // 抽象類不可實例化,錯誤
        //Animal animal = new Animal();
        // 可以創建抽象類的對象來指向非抽象類,正確
        Animal animal = new Fish();
        animal.breath();
    }
}

盡管animal 存放的是Fish 對象,但是不能直接調用這些子類中獨有的方法,調用獨有方法的時候需要進行類型轉換。

public class Test {
    public static void main(String[] args) {
        Animal animal = new Fish();
        animal.breath();
        ((Fish) animal).eat();
    }
}

 


免責聲明!

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



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