【发布时间】:2014-09-07 15:24:44
【问题描述】:
我在 Java 中测试了以下代码,以了解当我重写私有方法的实现时会发生什么。
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Superclass {
public void runDo() {
this.doSomething();
}
private void doSomething() {
System.out.println("from Superclass");
}
}
class Subclass extends Superclass {
private void doSomething() {
System.out.println("from Subclass");
}
}
class Runner {
public static void main(String[] args) {
Superclass superSuper = new Superclass();
Superclass superSub = new Subclass();
Subclass subSub = new Subclass();
superSuper.runDo();
superSub.runDo();
subSub.runDo();
}
}
上述样本的输出是
来自超类
来自超类
来自超类
虽然我期待像
来自超类
来自子类
来自子类
有人可以解释一下这种行为以及为什么它有意义吗?
【问题讨论】:
标签: java oop inheritance