实现抽象超类Java的麻烦

时间:2012-10-07 04:28:16

标签: java

我正在进行一项任务,我正在尝试实现一个扩展抽象超类的类,但是使用

    public class B extends A{}

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

使用:

    public abstract class B extends A{}

在作业的另一部分中给出了一个应该是正确的错误。

我该怎么办?谢谢你的帮助。

2 个答案:

答案 0 :(得分: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传递给使用A的方法和类,并且还可以更改A的工作方式。这是多态的一部分,其中一个对象实例可以充当其父(B,就像它的A一样)

我不知道它是否会有所帮助,但您可以阅读Abstract classes and methods

答案 1 :(得分:0)

如果您不想在B中提供act的实现,请不要将抽象类A中的方法声明为抽象方法。但根据您要实现的目标,这可能不是正确的选择。在第二种情况下,当抽象类扩展另一个抽象类时,使用“implement”而不是“extends”。希望它有所帮助