Fondamentalmente vorrei sapere perché un metodo statico non può essere ombreggiato da un metodo di istanza, (lo so perché, in determinate circostanze porterà ad un'ambiguità), mentre una variabile statica può essere ombreggiata da una variabile di istanza (si applica solo alle sottoclassi).Variabile e metodo shadowing in Java
Esempio:
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;
}
}
Quindi, se ho cercato di dichiarare int area
(variabile di istanza) insieme alla static int area
nella classe Super darebbe un errore, ma non avviene quando dichiarato nella sottoclasse anche se il static int area
è ancora visibile dalla sottoclasse.
Qual è esattamente la differenza in termini di comportamento tra il tentativo di ombreggiamento di un metodo statico con un metodo di istanza e il tentativo di ombreggiare una variabile statica con una variabile di istanza.
Grazie in anticipo.
possibile duplicato di [Perché Java non consente l'override dei metodi statici?] (Http://stackoverflow.com/questions/ 2223386/why-doesnt-java-allow-overriding-of-static-methods) – Makoto
Capisco perfettamente perché i metodi statici non vengano sovrascritti. Volevo sapere solo perché l'area delle ombre delle istanze (in termini new Bedroom(). A restituirà la variabile di istanza non super statica) mentre per i metodi non può accadere – Rollerball