【发布时间】:2015-04-26 20:14:03
【问题描述】:
我在很多地方读到静态方法不能被覆盖。但是,我写了一个示例查询来测试,似乎我的静态方法被覆盖了。
以下是我的查询:
public class staticTestDriver{
public static void main(String[] args){
subClass.print(); //seems the print() method has been overridden
}
}
class superClass {
static void print(){
System.out.println("this is static");
}
}
class subClass extends superClass{
static void print(){
System.out.println("This is overridden");
}
}
输出是“这被覆盖了”。有什么想法吗?
【问题讨论】:
-
这不是覆盖的意思。那只是阴影。
-
这不是压倒一切的,那是hiding。
-
鉴于调用
static方法的static上下文,我认为它不能被视为隐藏。 -
IE如果是
superClass myClass = new subClass(); myClass.print();,它就会隐藏起来。
标签: java static overriding