abstract修飾方法,會使這個方法變成抽象方法,也就是只有聲明(定義)而沒有實現,實現部分以";"代替。需要子類繼承實現(覆蓋)。
注意:有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。
abstract修飾方法就是要求其子類覆蓋(實現)這個方法。調用時可以以多態方式調用子類覆蓋(實現)后的方法,也就是說抽象方法必須在其子類中實現,除非子類本身也是抽象類。
注意:父類是抽象類,其中有抽象方法,那么子類繼承父類,并把父類中的所有抽象方法都實現(覆蓋)了,子類才有創建對象的實例的能力,否則子類也必須是抽象類。抽象類中可以有構造方法,是子類在構造子類對象時需要調用的父類(抽象類)的構造方法。
abstract 規則:
1:抽象類可以沒有抽象方法,但是有抽象方法的類必須定義為抽象類,如果一個子類繼承一個抽象類,子類沒有實現父類的所有抽象方法,那么子類也要定義為抽象類,否則的話編譯會出錯的。
2:抽象類沒有構造方法,也沒有抽象靜態方法。但是可以有非抽象的構造方法
3:抽象類不能被實例化,但是可以創建一個引用變量,類型是一個抽象類,并讓它引用非抽象類的子類的一個實例
4:不能用final 修飾符修飾
舉個簡單的例子下面有一個抽象類
abstract class E{
public abstract void show();//public abstract 可以省略
}
然后其它類如果繼承它通常為了實現它里面的方法
class F extends E{
void show(){
//寫具體實現的代碼
}
}
最后再主方法里面定義一個父類引用指向子類對象,就會發生多態現象,比如
E e=new F();
e.show();
實際調用了子類里面的show()方法
=====================================
原文鏈接:https://blog.csdn.net/u010963948/article/details/11472611