kurze Frage zur Vererbung

Hi,

ich bin neu hier im Forum und habe eine Frage zu Java. Ich muss die Frage richtig beantworten, damit ich den nächsten Block bearbeiten kann. Jedoch verstehe ich die Frage ich nicht so richtig verstehe. Ich hoffe ihr könnt mir weiterhelfen. Es ist eine Multiple Choice
Hier ist die Frage:

In einer Subklasse wurde eine Methode der Superklasse überschrieben. Nun erzeugt man ein Objekt der Subklasse und speichert dies in einer Objektvariable vom Typ der Superklasse (Hinweis: Polymorphie). Was passiert, wenn man versucht, diese Methode aufzurufen?

a) Es wird die Methode der Subklasse aufgerufen
b) Es kommt ein Fehler, da Objektvariablen der Superklasse keine Objekte von Subklassen aufnehmen können
c) Es wird die Methode der Superklasse aufgerufen
d) Es kommt ein Fehler, da man zuerst casten muss, um die überschriebene Methode der Subklasse aufzurufen

Ich danke euch vielmals im Voraus.
 
K

kneitzel

Gast
Also Die Frage besagt (übersetzt in Java):

Du hast die Klasse Subklasse:
Java:
public class Subklasse extends Superklasse {
    @Override
    public void eineMethode() {
        System.out.println("Subklasse::eineMethode()");
    }
}
Und die Klasse Superklasse:
Java:
public class Superklasse {
    public void eineMethode() {
        System.out.println("Superklasse::eineMethode()");
    }
}

Gegeben Sei der Code:
Java:
Superklasse variable = new Subklasse();
variable.eineMethode();

Was wird ausgegeben:
a) Subklasse::eineMethode()
b) Compilefehler, weil die Zuweisung nicht erlaubt ist
c) Superklasse::eineMethode()
d) Compilefehler, weil ein cast benötigt wird
 
Also Die Frage besagt (übersetzt in Java):

Du hast die Klasse Subklasse:
Java:
public class Subklasse extends Superklasse {
    @Override
    public void eineMethode() {
        System.out.println("Subklasse::eineMethode()");
    }
}
Und die Klasse Superklasse:
Java:
public class Superklasse {
    public void eineMethode() {
        System.out.println("Superklasse::eineMethode()");
    }
}

Gegeben Sei der Code:
Java:
Superklasse variable = new Subklasse();
variable.eineMethode();

Was wird ausgegeben:
a) Subklasse::eineMethode()
b) Compilefehler, weil die Zuweisung nicht erlaubt ist
c) Superklasse::eineMethode()
d) Compilefehler, weil ein cast benötigt wird
Cool, danke. Jetzt habe ich verstanden, wieso es die Subklasse sein muss. Danke an alle
 

Neue Themen


Oben