java - 扩展抽象类后的方法

标签 java inheritance

我不知道如何描述我的问题所以我举个例子:

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/

相关文章:

Java:让其他线程知道 GUI 是否可以使用

java - 哪些 Java 类/包可以安全地列入安全沙箱中的白名单?

java - SWT 使用 ContentProposalAdapter 显示 HTML

c++ - 如何根据容器中对象的类型来判断调用哪个函数?

c++ - 从 C++ 中的基类返回派生的 "this"的多态性

c++ - 继承、纯虚函数和非内联成员函数定义

java - 发生严重错误时 Spring 启动通知/重启

java - 给定大数字时应用程序崩溃

c++ - 调用接收派生类列表的方法不会在 C++ 中编译

python - Python类继承查询