我可以在java中抽象基類A中實現抽象方法嗎?在java中實現抽象方法/類
如果答案是肯定的,並且在基類A中存在一個實現的抽象方法,並且從A有一個派生類B(B不是抽象的)。 B是否仍然需要實現該基本抽象方法?
我可以在java中抽象基類A中實現抽象方法嗎?在java中實現抽象方法/類
如果答案是肯定的,並且在基類A中存在一個實現的抽象方法,並且從A有一個派生類B(B不是抽象的)。 B是否仍然需要實現該基本抽象方法?
如果我正確理解你的問題,是的。
public abstract class TopClass {
public abstract void methodA();
public abstract void methodB();
}
public abstract class ClassA extends TopClass {
@Override
public void methodA() {
// Implementation
}
}
public class ClassB extends ClassA {
@Override
public void methodB() {
// Implementation
}
}
在這個例子中,ClassB將被編譯。它將使用它自己的methodB()實現,以及ClassA的methodA()實現。如果需要,您也可以重寫ClassB中的methodA()。
否。抽象方法意味着由子類定義。有關更多信息,請參閱Abstract Methods and Classes。但是,如果需要,您可以在基類中定義一個方法並讓其子類覆蓋它。
是的,但它不能再抽象了。抽象意味着沒有實現。
你可以做的是:
interface I {
void meth();
}
//and
abstract class A implements I {
public void meth() {
//implementation
}
}
或者:
abstract class A {
public abstract void meth();
}
//and
abstract class B extends A {
public void meth() {
}
}
如果A已經實現,你可以在B改寫它(如果B是具體的),原因是b繼承了從A
沒有實施基本方法? –
默認實現你可以有兩個抽象類,X和Y,其中Y延伸X.在這種情況下,它可能是有意義Y的實施X的抽象方法,同時仍然文摘法案。另一個非抽象類Z可以擴展Y.但是,在你的例子中,A實現它自己的抽象方法是一個矛盾,使它們抽象的一點是它不提供實現,它只是指定方法簽名應該看起來像。
在這種情況下,Y是抽象的,因爲它可能有其他抽象方法? –
@Greg:最有可能的。 –
如果你實現一個抽象方法,它不是真的抽象,所以不。
抽象類可以有常規方法。如果你想實現類A的一些方法,並將其餘的方法留下抽象,你可以這樣做。然而,抽象方法不能有一個主體,因此如果你將一個方法標記爲抽象,那麼它必須由一個子類來實現,你不能在抽象類中實現它們。然而,你可以有一個沒有抽象方法的抽象類,那麼子類只需要擴展它。
是的,您可以在聲明爲抽象的類中實現抽象方法。如果一個類被聲明爲抽象的,並不意味着它的所有方法都必須是抽象的。
對於一個具體的子類,它是不是強制實施那些已經通過其超類的一個實現的抽象方法。
+1,雖然正確地說,我認爲答案應該是「Yes和No」考慮到OP居然問了兩個問題(你只回答了第一個用言語,但第二與代碼)。 – CPerkins