【发布时间】:2010-12-29 08:52:59
【问题描述】:
class BaseClass {
private void f() {
System.out.println("Baseclass f()");
}
public static void main(String[] args) {
BaseClass dc = new DerivedClass();
dc.f();
}
}
class DerivedClass extends BaseClass {
public void f() {
System.out.println("DerivedClass f()");
}
}
在我看来,dc 引用的对象应该只有一个 non-override 方法 - public void f() 方法,这使得它(公共方法)在使用 BaseClass 引用时不可见.既然dc引用的对象没有private void f()方法,也因为DeriverClass不能继承私有方法,那么dc引用的对象怎么可能调用f()方法呢?
谢谢。
【问题讨论】:
-
为什么要在基类的方法中声明派生类的变量? o.0
-
我在 Thinking in Java 中发现了这种代码。我认为这是深入挖掘 Java 编程语言核心的一个有价值的例子。
-
你说的是
public void f()。这不会发生在任何课程中。是虚构的方法吗?那么它将属于哪个类? -
对不起。我忘记了 public 关键字。
标签: java inheritance polymorphism