Können statische Methoden überlagert werden?

Syrill

Mitglied
Hallo! :)

Können statische Methoden in einer abgeleiteten Klasse überlagert werden? Oder sind die Ableitungen dann einfach ungültig, bzw. werden ignoriert?


EDIT:
Oder können sie das in der Regel schon. Wenn aber dann eine folgender Fall auftritt:
Code:
VaterKlasse xyz = new AbgeleiteteKlasse();
wird dann dennoch die statische Methode der Vaterklasse verwendet, obwohl diese eigentlich in der abgeleiteten Klasse überlagert wurde?
 
Zuletzt bearbeitet:
Was hindert dich daran es zu prüfen? Das hat jetzt gerade mal eine Minute gedauert.
Java:
class A {
	public static void a() {
		System.out.println("a");
	}

	public static void main(String[] args) {
		A.a();
		B.a();
		C.a();
	}
}

class B extends A {}

class C extends A {
	public static void a() {
		System.out.println("c");
	}
}

Ausgabe:

Beantwortet das deine Frage?


Der Teil nach dem Edit macht keinen Sinn, weil du dort eine Instanz erzeugst. Du redest aber von statischen Methoden.
 
Überlagern ja, aber nicht erben. Dazu eine Erweiterung des vorherigen Beispiels mit teilen aus dem ersten Post:

Java:
public static void main(String[] args) {
    A a = new A();
    a.a();
    A b = new B();
    b.a();
    A c1 = new C();
    c1.a();
    
    C c2 = new C();
    c2.a();
}

Ausgabe:

Code:
a
a
a
c

Bei statischen Methoden wird die aufzurufende Methode nicht zur Laufzeit sondern Compilezeit festgelegt, wodurch der Typ der Variablen entscheidend ist.
 

Neue Beiträge

Zurück