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ę.