我知道我们应该通过类名以静态方式访问静态成员并理解原因(例如,下一个代码,我理解这是不好的做法)。但是为什么当我尝试通过super关键字访问静态方法时,没有编译器警告?考虑一下你有下一个代码:
class Parent {
static int staticField;
static void staticMethod() {}
}
class Child extends Parent {
void testStatic() {
this.staticMethod(); // warning
super.staticMethod(); // NO warnings
new Child().staticMethod(); // warning
new Parent().staticMethod(); // warning
this.staticField++; // warning
super.staticField++; // warning
new Child().staticField++; // warning
new Parent().staticField++; // warning
}
}
所以,问题是为什么编译器不会给行super.staticMethod();