在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的一些方法,而将其他方法保留为抽象方法,您可以这样做。然而,抽象方法不能有主体,因此,如果你将一个方法标记为抽象,那么它必须由子类实现,你不能在抽象类中实现它们。但是,你可以有一个没有抽象方法的抽象类,那么子类只需要扩展它。

是的,你可以在一个被声明为抽象的类中实现抽象方法。如果一个类被声明为抽象,并不意味着它的所有方法都必须是抽象的。

对于一个具体的子类,并不强制实现已经由其超类之一实现的抽象方法。

。抽象方法意味着由子类定义。有关更多信息,请参见抽象方法和类。但是,如果需要,您可以在基类中定义一个方法,并让子类重写它。

是的,但它不能再抽象了。抽象意味着没有实现。

你可以做的是:

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的默认实现。

相关内容

  • 没有找到相关文章

最新更新