Variablen- und Methoden-Shadowing in Java
Grundsätzlich möchte ich wissen, warum eine statische Methode nicht durch eine Instanzmethode gespiegelt werden kann (ich weiß, warum dies unter bestimmten Umständen zu Mehrdeutigkeiten führt), wohingegen eine statische Variable durch eine Instanzvariable gespiegelt werden kann (dies gilt nur für Unterklassen) ).
Beispiel:
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;
}
}
Also, wenn ich versucht habe zu erklärenint area
(Instanzvariable) zusammen mit derstatic int area
in der Superklasse würde es einen Fehler geben, aber es kommt nicht vor, wenn es in der Unterklasse deklariert wird, obwohl dasstatic int area
ist noch von der Unterklasse sichtbar.
Was genau ist der Unterschied im Verhalten zwischen dem Versuch, eine statische Methode mit einer Instanzmethode zu spiegeln, und dem Versuch, eine statische Variable mit einer Instanzvariablen zu spiegeln?
Danke im Voraus.