我可以在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