0 Daumen
352 Aufrufe

public class A {
static int a = 10;

void ausgeben1() {
System.out.println("abc");
}

void ausgeben2() {
System.out.println("cba");
}

}

public class B extends A {
static int a = 20;

void ausgeben1() {
System.out.println("abcd");
}

void ausgeben() {
System.out.println("dcba");
}
}

public class Ausführen {
public static void main(String[] args) {
A blau = new B();
B gruen = new B();
//
}

}
Ich brauche eine ausführliche Erklärung, was passieren würde, wenn an der Stelle // einmal

gruen.ausgeben1();

stehen würde, also was ausgegeben werden würde...

Und was passiert, wenn an der Stelle // folgendes stehen würde:

((A) gruen).ausgeben1();
Ich brauche eine Erkläung, wieso was ausgeben wird...

Ich habe das schon getestet und weiß was ausgeben wird, jedoch verstehe ich nicht wieso...

Avatar von

1 Antwort

+1 Daumen
 
Beste Antwort
gruen.ausgeben1();

Hier wird die Methode des Objekts gruen aufgerufen, da dieses ein Objekt vom Typ B ist. Demnach erhält man als Ausgabe:

abcd
((A) gruen).ausgeben1();

Hier wird ebenfalls

abcd

ausgegeben. Entfernst Du die Definition von ausgeben1() in der Klasse B, wird die aus Klasse A verwendet.

Avatar von

gruen.ausgeben1();

Welches "B" ist geanu der Grund für die Ausgabe?:
B gruen = new B();



((A) gruen).ausgeben1();

Entfernst Du die Definition von ausgeben1() in der Klasse B, wird die aus Klasse A verwendet.

Kannst Du bitte diesen Satz nochmal überprüfen? Da ist glaube ich etwas falsch...

Welches "B" ist geanu der Grund für die Ausgabe?:

B. Das zweite aber auch, denn damit initialisierst Du B ja überhaupt erst.

B gruen = new A();

geht nicht, da A nicht von B erbt. 

Entfernst Du die Definition von ausgeben1() in der Klasse B, wird die aus Klasse A verwendet.

Da ist nichts falsch ;-) Ich habe das vorhin ausprobiert. Allerdings liefert Dir gruen.ausgeben1(); dann einen Fehler, weil die Methode logischerweise nicht mehr in B vorhanden ist.

Vielen Dank!! ;)




Wie wird jetzt hier ((A) gruen).ausgeben1();  etwas ausgegeben?

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Daumen
1 Antwort
0 Daumen
1 Antwort
0 Daumen
1 Antwort
Gefragt 1 Apr 2018 von probe

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community