2014-03-05 206 views
-4

抽象類由另一個抽象類和非抽象類擴展時是否有區別?例如,父抽象類同時具有抽象方法和非抽象方法。當抽象類被抽象類和非抽象類分別擴展時,在實現方法時是否有區別?由另一個抽象類和非抽象類繼承抽象類

+1

'差異'在哪方面? –

+0

這個問題將被關閉,因爲不清楚你在問什麼。 –

+0

你試過了嗎?如果你嘗試,那麼你會知道其中的差異。 –

回答

0

我試圖通過代碼來覆蓋一些基本點。請參閱上述方法的註釋。

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() { 

    } 
} 
1

如果抽象類被另一個抽象類擴展,那麼它不需要實現所有的父類方法,但擴展抽象子類的第一個具體類必須實現所有的父抽象類方法。

非抽象類必須實現抽象父類的方法