抽象類別:
# 1、包含一個或多個抽象方法的類別本身必須被聲明成抽象的。
2、除了抽象方法之外,抽象類別還可以包含特定資料和具體方法
3、擴展抽象類別的兩個選擇(抽象方法的具體實作在子類別中) :
A、 抽象類別定義部分抽象類別或不定義抽象類別方法,以便也必須將子類別標記為抽象類別。
B、定義全部的抽象方法,因此子類別就不是抽象的了
4、無法直接被實例化,可以間接使用
5、一個類別如果繼承一個抽象類,必須實現該抽象類別裡宣告的抽象方法
若不實現,需要將自己宣告為抽象類別(這可能會是個提問)
#下面來說說JDK8裡面介面的新特性:
介面不在只能使用抽象的方法了,可以加入具體方法,可以是靜態的也可以是非靜態的,非靜態的方法前面要使用關鍵字defualt。
靜態方法只能被抽口引用,非靜態的方法只能被implement類別實例化的物件引用。所以當2個介面的靜態方法名字相同時,不會有問題,只能被介面的類別名稱. 引用。而非靜態方法就會出現問題,因為物件不知道使用引用哪個介面的方法,就會造成編譯失敗。
下面用程式碼示範一下
package 面向对象;//JDK8的接口新特性。interface A {public abstract void hehe();//传统抽象方法public static void haha()//静态方法 { System.out.println("haha"); }public default void lala() { System.out.println("lala");//非静态要加关键字default } }public class Test implements A {public static void main(String[] args)//因为不是抽象的所以可以重写也可以直接使用。 { A.haha();//不能被Test调用new Test().lala();//非静态要创建实例使用 } }
神奇的是有抽象方法存在,子類別並沒有重寫抽象方法,虛擬機器沒有報錯,表示介面是不用寫預設的抽象方法的。
以上是java中的抽象類別實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!