-4
抽象類由另一個抽象類和非抽象類擴展時是否有區別?例如,父抽象類同時具有抽象方法和非抽象方法。當抽象類被抽象類和非抽象類分別擴展時,在實現方法時是否有區別?由另一個抽象類和非抽象類繼承抽象類
抽象類由另一個抽象類和非抽象類擴展時是否有區別?例如,父抽象類同時具有抽象方法和非抽象方法。當抽象類被抽象類和非抽象類分別擴展時,在實現方法時是否有區別?由另一個抽象類和非抽象類繼承抽象類
我試圖通過代碼來覆蓋一些基本點。請參閱上述方法的註釋。
package abstractpkg;
public class Test {
public static void main(String[] args) {
C c = new C(); // Compile-time error. C is abstract
B b = new B(); // OK: B is concrete
}
}
abstract class A{
abstract void methA();
public void methB(){
}
}
/**
* Non-abstract class extending asbtract class.
* */
class B extends A{
/*
* Since it is Non-abstract class, it must provide impl of abstract method because without impl of
* method Object of class can't be created.
* */
void methA() {
};
/*
* This overriding is optional, since it's impl is already existing in super class.
* If class B has to give spl impl then B should override this method
* */
@Override
public void methB() {
// TODO Auto-generated method stub
super.methB();
}
}
abstract class C extends A{
/*
* Since C is also abstract it may or may not override the method.
* */
/*
* Overriding and providing impl is optional.
* */
@Override
void methA() {
}
}
如果抽象類被另一個抽象類擴展,那麼它不需要實現所有的父類方法,但擴展抽象子類的第一個具體類必須實現所有的父抽象類方法。
非抽象類必須實現抽象父類的方法
'差異'在哪方面? –
這個問題將被關閉,因爲不清楚你在問什麼。 –
你試過了嗎?如果你嘗試,那麼你會知道其中的差異。 –