我們把用關鍵字abstract修飾的類別稱為abstract類,也就是抽象類別,例如:
abstractclassA{…}
我們把用關鍵字abstract修飾的方法稱為abstract方法,也就是抽象方法,例如:
abstract int max(int x,int y);
注意:
1)對於abstract方法,只允許聲明,不允許實現,即沒有方法體,且不允許使用final和abstract同時修飾一個方法或類,也不允許使用static修飾abstract方法,即abstract方法必須是實例方法。
2)abstract類別中可以有abstract方法,也可以有非abstract方法,而非abstract類別中不可以有abstract方法。
例如:A類別中的max()方法是abstract方法,min()方法是普通方法(非abstract方法)。
abstractclassA{abstractintmax(intx,inty);intmin(intx,inty){returnx<y?x:y;}}
對於abstract類,不能使用new運算子來建立該類別的對象,如果一個非abstract類是某個abstract類的子類,那麼它必須重寫父類的抽象方法,並給出方法體,這就是不允許使用final和abstract同時修飾一個方法或類別的原因。
我們可以使用abstract類別聲明對象,儘管不能使用new運算子來建立該對象,但是該物件可以成為其子類別物件的上轉型對象,這樣該物件就可以呼叫子類別重寫的方法。
注意:abstract類別可以沒有abstract方法,如果一個abstract類別是abstract類別的子類,那麼它既可以重寫父類別的abstract方法,也可以繼承父類別的abstract方法。