抽象類和接口

抽象類:
包含抽象方法的類
抽象方法沒有方法體{},不能執行代碼
抽象類不能被實例化(Shape shape = new Shape // 錯誤)
包含抽象方法的類必須加abstract關鍵字表明這是抽象類
抽象方法不能是private的
同時也可包含普通方法和普通字段
普通方法和普通字段可以被子類直接調用而不必重寫(override)
例子

abstract class Shape {
    void func(){
        System.out.println("abstract");
    }
    String name = "";
    abstract public void draw ();
}

接口(interface):
只能包含抽象類
不能包含普通方法
子類必須重寫所有的抽象方法
一個子類可以實現多個接口
可以extends多個父接口
不能繼承抽象類
字段只能包含靜態常量(final static)
接口中的方法一定是抽象方法 ,可以省略abstract
接口中的方法一定是public,可以省略public
使用implements 實現接口(什麼都沒有,需要自己實現)
接口不能單獨被實例化
接口命名以大寫字母I開頭緊跟形容詞
注:接口中的方法和屬性不要加任何修飾符號,保持代碼簡潔性
可以在調用的時候創建一個接口的引用,對應到一個子類的實例,例:

interface IShape {
    void draw();
    //public final static int a = 10;
}
public class Rect implements IShape {
    @Override
    public void draw() {
        System.out.println("□");
    }
}
public class Test {
    public static void main(String[] args) {
        IShape shape = new Rect();
        shape.draw();
    }
}

抽象類存在的本身意義就是爲了被繼承
抽象類不能被實例化,只能創建該抽象類的子類,然後讓子類重寫抽象類中的方法
相當於多了一層編譯器的校驗

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