2

我正在做一个任务,我试图实现一个扩展抽象超类的类,但是通过使用

    public class B extends A{}

但是,这给了我 B 类型必须实现抽象方法 A.act 的错误,是否有另一种方法可以在不使用扩展的情况下做到这一点?

使用:

    public abstract class B extends A{}

在作业的另一部分给我一个不同的错误,应该是正确的。

我应该怎么办?谢谢您的帮助。

4

2 回答 2

2

为了B被 JVM 实例化,它不能是abstract. 抽象类是关于类如何工作的想法或建议,其中一些(或全部)功能需要由扩展它的类来实现。

为了B被实例化,它必须实现所有的抽象方法A

要解决您的问题,您必须提供A标记为abstract...的方法的实现

public abstract class A {
     public abstract void implementMe();
}

public class B extends A {
    public void implementMe() {
        // Your implementation
    }
}

这样做的大部分原因是它允许您传递给使用并改变工作方式的B方法和类。这是多态性的一部分,其中一个对象实例可以充当其父级(就像它一样)AABA

我不知道它是否会有所帮助,但您可以阅读抽象类和方法

于 2012-10-07T04:35:46.903 回答
0

如果您不想在 B 中提供行为的实现,请不要将抽象类 A 中的方法行为声明为抽象方法。但这可能不是正确的选择,具体取决于您要实现的目标。在第二种情况下,当抽象类扩展另一个抽象类时,使用“实现”而不是“扩展”。希望能帮助到你

于 2012-10-07T04:41:10.510 回答