我不知道如何描述我的问题所以我举个例子:
public abstract class A {
public abstract void methodToOverride();
public void methodNotToOverride() { }
}
public class B extends A {
@Override
public void methodToOverride() { }
public void someOtherMethodNotFromClassA() { }
}
现在我需要在我的代码中做这样的事情:
A object = new B();
object.someOtherMethodNotFromClassA();
但我得到“无法解决方法错误”。在抽象类中定义这样的方法不是一种选择。有什么线索吗?
最佳答案
这是不可能的。虽然对象是 B 类型,但引用是 A 类型。因此,您只能访问 A 类可见的方法。
如果你改变这个:
A a = new B();
为此:
B a = new B();
您将能够访问 someOtherMethodNotFromClassA
。另一种选择是将 a
转换为类型 B
:
A a = new B();
((B)a).someOtherMethodNotFromClassA();
关于java - 扩展抽象类后的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082153/