基本上我想知道为什么静态方法不能被实例方法遮蔽,(我知道为什么,它会在某些情况下导致歧义),而静态变量可以被实例变量遮蔽(它仅适用于子类)。
例子:
public class Apartment{
static int area = 10;
public static int getArea(){
return area;
}
}
class BedroomFlat extends Apartment {
int area = 10;// no problem at all
public int getArea(){ // illegal line it cannot hide the super static method
return area;
}
}
因此,如果我尝试在超类中声明int area
(实例变量)以及static int area
它会给出一个错误,但在子类中声明时它不会发生,即使static int area
从子类中仍然可见。
尝试使用实例方法隐藏静态方法和尝试使用实例变量隐藏静态变量之间的行为究竟有什么区别。
提前致谢。