Inheritance Flashcards

1
Q

Aufgabe Inheritance : Was gibt folgendes Program aus?

class A {
public int x;

public A(int a) {
    this.x = a;
}

public int getX() {
    return x;
}

public int getY() {
    return this.getX() + 2;
} }

class B extends A {
public int x;

public B(int b) {
    super(b);
    this.x = 2 * b;
} }

class C extends B {
public C(int c) {
super(c);
}

public int getX() {
    return 18;
} }

public class Inheritance {
public static void main(String[] args) {
A aa = new A(10);
A ab = new B(100);
A ac = new C(1000);
System.out.println(aa.getY());
System.out.println(ab.getY());
System.out.println(ac.getY());

    B bb = new B(10);
    B bc = new C(100);
    System.out.println(bb.getY());
    System.out.println(bc.getY());

    C cc = new C(10);
    System.out.println(cc.getY());
} }
A

12
202
20
22
102
20

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vererbung

Was ist die Ausgabe von der folgenden main-Methode Quizz?

class D {
public String s;
public D() { s= “d”; }
public String foo() { return “D” + s; }
public String bar() { return foo() + s; }
}

class E extends D {
public String s;
public E() { s= “e”; }
public String foo() { return “E” + s; }
}

public class Quizz {

public static void main(String[] args) {
E e = new E();
D d = e;

System.out.println( d.foo() + d.s );
System.out.println( e.foo() + e.s );
System.out.println( d.bar() + d.s );
System.out.println( e.bar() + e.s );

}

A

Die Ausgabe des Programms ist:

Copy code
DE
Ee
DEd
Eed
Der Ausdruck d.foo() ruft die Methode foo() der Klasse E auf, da d als Instanz von E deklariert wurde und zur Laufzeit das Polymorphismus-Prinzip anwendet wird. Jedoch ist die Referenzvariable d vom Typ D, so dass das Attribut s von der Klasse D verwendet wird, das den Wert “d” enthält.

Der Ausdruck e.foo() ruft auch die Methode foo() der Klasse E auf und gibt “Ee” zurück, da e vom Typ E ist und das Attribut s der Klasse E den Wert “e” hat.

Der Ausdruck d.bar() ruft die Methode bar() der Klasse D auf, da d als Instanz von D deklariert wurde und zur Laufzeit kein Polymorphismus auftritt. Die Methode foo() wird aufgerufen und gibt “Dd” zurück, da s von der Klasse D verwendet wird.

Der Ausdruck e.bar() ruft auch die Methode bar() der Klasse D auf, aber da e vom Typ E ist, wird die Methode foo() der Klasse E aufgerufen, die “Ee” zurückgibt. Dann wird das Attribut s der Klasse D verwendet, das “d” enthält, und die Methode gibt “Eed” zurück.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly