zzz.test

Bitte aktiviere JavaScript!
Hallo,

ich hänge gerade an einem Code fest, der mir nicht so ganz klar ist. Bin absoluter Anfänger.
Ich soll erklären warum bei der Ausführung der Methode ZZZ.test() folgenden Code die Ausgabe ZZZYYY erscheint:

Java:
public class ZZZ {
          public void a(Object x) {
                    System.out.print("ZZZ");
           }
         public static void test () {
                    ZZZ z = new YYY();
                    z.a("Hallo");
                    YYY y = newYYY();
                    y.a("Hallo");
         }
}
class YYY extends ZZZ {
       public void a(String x) {
               System.out.print("YYY);
       }
}
Also mir ist klar, dass static immer ausgeführt wird. Aber ich verstehe einfach nicht warum erst ZZZ ausgeführt wird. Außerdem was genau bedeutet Object x? Ich habe die Klasse Object kennengelernt.

LG
 
Zuletzt bearbeitet von einem Moderator:
A

Anzeige




Schau mal hier —> (hier klicken)
Die Methoden a(Object x) und a(String x) sind zwei verschiedene.

In ZZZ existiert eine Methode a(Object x). Du deklarierst in test() die Variable z vom Typ ZZZ. Für z existiert also nur die Methode a(Object x) und die wird ausgeführt, wenn Du einen String übergibst, weil String eben auch ein Object ist (Object Mutter aller Klassen).

y dagegen deklarierst Du vom Typ YYY. Dort existieren nun zwei Methoden: einmal a(Object x) und einmal a(String x). Hier wird die Methode genommen, die "am besten" passt.
 
Nehmen wir mal an, Du weist einer Variablen vom Typ ZZZ ein Objekt zu. Dann muss dieses Objekt die Methode a(Object) anbieten. Würde die Methode a(Object) durch a(String) überschrieben, wäre das nicht mehr der Fall. Beispiel:
Java:
ZZZ z = new YYY();
z.a(new Object());
 
Wenn ich dann richtig rekapituliere, dann werden beide Methoden ausgeführt da der dynamische Typ, den statischen nicht überschreibt, richtig?
 
A

Anzeige




Vielleicht hilft dir das hier weiter: (klicke hier)
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben