Variable and Method shadowing w Javie

Zasadniczo chciałbym wiedzieć, dlaczego metoda statyczna nie może być śledzona przez metodę instancji (wiem, dlaczego, w pewnych okolicznościach doprowadzi to do niejednoznaczności), podczas gdy zmienna statyczna może być śledzona przez zmienną instancji (dotyczy tylko podklas ).

Przykład:

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;
    }
}

Więc jeśli próbowałbym to oświadczyćint area (zmienna instancji) wraz zstatic int area w super klasie dałby błąd, ale nie zdarzy się, gdy zostanie zadeklarowany w podklasie, mimo żestatic int area jest nadal widoczny z podklasy.

Jaka jest różnica w zachowaniu między próbą cieniowania metody statycznej z metodą instancji i próbą przesłaniania zmiennej statycznej za pomocą zmiennej instancji.

Z góry dziękuję.

questionAnswers(6)

yourAnswerToTheQuestion