Java關鍵字(50)之Abstract

abstract修飾的類是不完整的類;方法沒有被完全實現,必須聲明爲抽象類;抽象類不能實例化(new 會出現編譯錯誤),通過子類拓展。包含抽象方法的類,必須用abstract修飾(否則,出現編譯錯誤)。

public abstract class AbstractDemo {
    int x = 0;
    int y = 0;

    AbstractDemo(int x, int y){
        this.x = x;
        this.y = y;
    }

    abstract void add(int x,int y);
}

public class SimpleAbstractDemo extends AbstractDemo {

    SimpleAbstractDemo(int x, int y) {
        super(x, y);
    }

    @Override
    void add() {
        System.out.println("x+y=" + (x + y));
    }

    public static void main(String[] args){
        AbstractDemo abstractDemo = new SimpleAbstractDemo(3,5);
        abstractDemo.add();
    }
}

抽象方法add(),不能用private、static修飾,否則編譯報語法錯誤。抽象類不能被實例化,需要完全實現抽象方法的子類裏面super調用初始化域成員變量值。abstract修飾的方法所屬的類一定是抽象類,abstract修飾的類一定有抽象方法存在是不成立的。通過方法的覆蓋實現多態屬性。

對一個沒有聲明爲abstract類進行修改,修改爲abstract類,嘗試創建類的實例則會報錯。若對一個abstract類修改,不使用abstract修改則不會影響二進制的兼容性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章