基本的に、インスタンスメソッドによって静的メソッドをシャドウできない理由を知りたいのですが(理由はわかっていますが、特定の状況ではあいまいさにつながります)、静的変数はインスタンス変数によってシャドウすることができます(サブクラスにのみ適用されます) )。
例:
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
インスタンスメソッドで静的メソッドをシャドウイングしようとすることと、インスタンス変数で静的変数をシャドウイングしようとすることの動作の違いは何ですか。
前もって感謝します。