我可以在java中的抽象基类A中实现抽象方法吗?
如果答案是肯定的,并且在基类 A 中有一个已实现的抽象方法,并且有来自 A 的派生类 B(B 不是抽象的)。B 是否仍然必须实现该基本抽象方法?
我可以在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 的一些方法,而将其余方法保留为抽象,您可以这样做。但是,抽象方法不能有主体,因此如果将方法标记为抽象,则必须由子类实现,不能在抽象类中实现。但是,你可以有一个没有抽象方法的抽象类,然后子类只需要扩展它。
是的,您可以在声明为抽象的类中实现抽象方法。如果一个类被声明为抽象的,这并不意味着它的所有方法都必须是抽象的。
For a concrete sub class, it is not mandatory to implement the abstract methods that are already implemented by one of their super class.
没有。抽象方法是由子类定义的。有关详细信息,请参阅抽象方法和类。但是,如果需要,您可以在基类中定义一个方法并让子类覆盖它。
是的,但它不能再抽象了。抽象意味着没有实现。
你可以做的是:
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 继承了该默认实现。