[英]implementing abstract methods/classes in java
我可以在java中的抽象基類A中實現抽象方法嗎?
如果答案是肯定的,並且在基類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()。
你可以有兩個抽象類,X和Y,其中Y擴展X.在這種情況下,Y實現X的抽象方法,同時仍然是抽象的,這是有意義的。 另一個非抽象類Z可以擴展Y.但是,在你的例子中,對於A來實現它自己的抽象方法是一個矛盾,使它們成為抽象的點是因為它不提供實現,它只是指定方法簽名是什么應該是這樣的。
抽象類可以有常規方法。 如果要實現A類的某些方法並將其余方法保留為抽象,則可以執行此操作。 但是,抽象方法不能有一個體,因此如果將方法標記為抽象,則必須由子類實現,不能在抽象類中實現它們。 但是,您可以擁有一個沒有抽象方法的抽象類,然后子類只需要擴展它。
是的,您可以在聲明為abstract的類中實現抽象方法。 如果一個類被聲明為abstract,並不意味着它的所有方法都必須是抽象的。
對於具體的子類,不必強制實現已由其超類之一實現的抽象方法。
不 。 抽象方法意味着由子類定義。 有關更多信息,請參閱抽象方法和類 。 但是,您可以在基類中定義方法,並在需要時讓子類覆蓋它。
是的,但它不再是抽象的。 摘要意味着沒有實現。
你能做的是:
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繼承了該默認實現。
如果你實現一個抽象方法,它不再是抽象的,所以沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.