在java中实现抽象方法/类

在java中实现抽象方法/类,java,methods,abstraction,base,derived,Java,Methods,Abstraction,Base,Derived,我可以在java中的抽象基类A中实现抽象方法吗 如果答案是肯定的,并且在基类a中有一个实现的抽象方法,并且有一个从a派生的类B(B不是抽象的)。B还必须实现那个基本抽象方法吗 否。抽象方法是由子类定义的。有关详细信息,请参阅。但是,如果需要,您可以在基类中定义一个方法,并让子类重写它。是的,但它不能再抽象了。抽象意味着没有实现 您可以做的是: interface I { void meth(); } //and abstract class A implements I {

我可以在java中的抽象基类A中实现抽象方法吗


如果答案是肯定的,并且在基类a中有一个实现的抽象方法,并且有一个从a派生的类B(B不是抽象的)。B还必须实现那个基本抽象方法吗

。抽象方法是由子类定义的。有关详细信息,请参阅。但是,如果需要,您可以在基类中定义一个方法,并让子类重写它。

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

您可以做的是:

interface I {
    void meth();
}

//and

abstract class A implements I {
    public void meth() {
        //implementation
    }
}
或:


如果A已经有了一个实现,您可以在B中重写它(如果B是具体的),因为B继承了A的默认实现。

您可以有两个抽象类,X和Y,其中Y扩展了X。在这种情况下,Y可以在仍然是抽象的情况下实现X的抽象方法。另一个非抽象类Z可以扩展Y。但是,在您的示例中,对于A来说,实现自己的抽象方法是一个矛盾,将它们抽象化的目的是为了不提供实现,它只指定方法签名应该是什么样子。

如果实现一个抽象方法,它就不再是真正的抽象,因此,没有。

抽象类可以有常规方法。如果您想实现类A的一些方法,而让其余的方法保持抽象,您可以这样做。然而,抽象方法不能有一个主体,因此如果你将一个方法标记为抽象的,那么它必须由一个子类实现,你不能在抽象类中实现它们。然而,您可以有一个没有抽象方法的抽象类,然后子类只需要扩展它。

如果我正确理解您的问题,是的

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()。

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


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

不实现基方法?在这种情况下,Y是抽象的,因为它可能有其他抽象方法?+1,尽管正确地说,我相信答案应该是“是和否”假设OP实际上问了两个问题(你只回答了第一个问题,但第二个问题回答了代码)。
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
  }
}