这些OCA练习题(pdf)中的问题3 :
abstract class Writer {
public static void write() {
System.out.println("Writing...");
}
}
class Author extends Writer {
public static void write() {
System.out.println("Writing book");
}
}
public class Programmer extends Writer {
public static void write() {
System.out.println("Writing code");
}
public static void main(String[] args) {
Writer w = new Programmer();
w.write();
}
}
输出为Writing...
。
我不明白为什么。作为Programmer
重写Writer
的write方法,我认为它应该在中Programmer
而不是在中调用该方法Writer
。
为什么?
您必须在这里了解两点。
对于static
成员,没有压倒一切的概念。它们是简单的,static
并且永远不会根据实例进行更改。
而static
成员绑定到类,而不是实例。因此,无论实例是什么,它们都会查找被调用并执行的类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句