我正在进行一项任务,我正在尝试实现一个扩展抽象超类的类,但是使用
public class B extends A{}
然而,这给了我B类必须实现抽象方法A.act的错误,是否有另一种方法可以在不使用extends的情况下实现这一点?
使用:
public abstract class B extends A{}
在作业的另一部分中给出了一个应该是正确的错误。
我该怎么办?谢谢你的帮助。
答案 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”。希望它有所帮助