[JAVA] Stimmt das über static?

... komplette Frage anzeigen

4 Antworten

Stimmt.

Und ...

statische Methoden sind fest (statisch) an die Klasse gebunden und können nicht dynamisch in Subklassen überschrieben werden.

class A {
static void methodA() {
System.out.println("Static methodA in A");
}

void methodB() { System.out.println("Dynamic methodB in A");
}
}
class B extends A {
static void methodA() {
System.out.println("Static methodA in A");
} void methodB() {
System.out.println("Dynamic methodB in A");
}
}
public class C {

public static void main(String[] args) {
A a1 = new A();
B b1 = new B();
A a2 = new B();

// ohne Objekt via Klasse
A.methodA();
B.methodA();

// static via Objekt aufgerufen (bad style)
a1.methodA();
b1.methodA();
a2.methodA();

// dynamisch via Objekt
a1.methodB();
b1.methodB();
a2.methodB();
}
}
Output:
Static methodA in A
Static methodA in B
Static methodA in A
Static methodA in B
Static methodA in A
Dynamic methodB in A
Dynamic methodB in B
Dynamic methodB in B
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Schachpapa
25.08.2016, 17:36

Wieso ist eigentlich dieser gf Editor so grottenschlecht? Das obige sah bei mir einigermaßen vernünftig aus. Ich hab's mir aber nach dem abschicken nicht nochmal angeschaut.

Ich habe NoScript aktiviert, weil mir beim Surfen der ganze Werbekram auf die Nerven geht. Für gf ist gutefrage.net und gft2.de erlaubt.

Wozu brauche ich: interactivemedia.net, srvtrack.com, eyeota.net, criteo.com, xplosion.de und doubleclick.com?

0

Statische Methoden haben keinen Zugriff auf nicht-statische Klassen/Member Variablen.

Bitte bringe die Begriffe nicht durcheinander. Wenn du von einer nicht-statischen Klassenvariable schreibst, dann ist das ein Widerspruch in sich.

Eine Klassenvariable ist statisch und ungebunden an eine Instanz.

class A { public static int a = 1; }

Eine Instanzvariable ist dynamisch und gebunden an eine Instanz.

class B { public int b = 1; }
Antwort bewerten Vielen Dank für Deine Bewertung

1. Ja, ABER da muss ein NUR hinter "hat", denn normale Funktionen können genausogut auf statische Attribute zugreifen.

2. Ja, ABER dass sie statisch ist ist dabei völlig irrelevant. Wenn du eingibst "System.out.println()", rufst du aus ENER Klasse über das statische Attribut(out) einer ANDEREN Klasse(System) eine NICHT STATISCHE Funktion einer dritten Klasse(PrintStream) auf.

3. Korrekt, denn statische Funktionen haben keinen Kontext zu einem Objekt, welcher für Methoden von Objekten nötig sind.

4. Siehe 3.

Antwort bewerten Vielen Dank für Deine Bewertung

ja.

...

Antwort bewerten Vielen Dank für Deine Bewertung