Hey, ich habe folgende Aufgabe zu bearbeiten, dabei habe ich aber leider garkeinen ansatz, vielleicht kann mir jemand helfen
Aufgabe 3 (Zusatz) Bindung (10 Punkte)
Methoden k¨onnen in Java ¨uberladen und Variablen ¨uberdeckt werden. Die Zuordnung der entsprechenden
Methode oder Variable erfolgt ¨uber die Bindung. Sehen Sie sich dazu folgende Beispiele an:
a) Gegeben seien folgende Methoden, wobei Y Unterklasse von X und Z Unterklasse von Y ist:
Welche Methode wird statisch an folgende Aufrufe gebunden, bzw. was passiert bei folgenden Aufrufen(begründen)?
b) Gegeben seien die Klassen A, B und C, wobei B von A und C von B abgeleitet ist, sowie die folgenden
Klassen:
WelcheMethode welcher Klasse wird benutzt bzw. was passiert bei folgenden Aufrufen (begründen)?
Wie gesagt, es geht mir nicht um eine Lösung, das macht den Spaß dran kaputt, aber ein Denkanstoß wäre ganz nett
Grüße Lukas
Aufgabe 3 (Zusatz) Bindung (10 Punkte)
Methoden k¨onnen in Java ¨uberladen und Variablen ¨uberdeckt werden. Die Zuordnung der entsprechenden
Methode oder Variable erfolgt ¨uber die Bindung. Sehen Sie sich dazu folgende Beispiele an:
a) Gegeben seien folgende Methoden, wobei Y Unterklasse von X und Z Unterklasse von Y ist:
Java:
int add(double a, float b) {...} // Methode 1
int add(long a, int b) {...} // Methode 2
void print(X a, Y b) {...} // Methode 3
void print(Y b, Z c) {...} // Methode 4
Welche Methode wird statisch an folgende Aufrufe gebunden, bzw. was passiert bei folgenden Aufrufen(begründen)?
Java:
X x = new X(); Y y = new Y(); Z z = new Z();
add(1.0, 2.0); // Aufruf 1
add(2.0, 1.0F); // Aufruf 2
add(1, 2); // Aufruf 3
add(2, 1L); // Aufruf 4
print(z, z); // Aufruf 5
print(x, z); // Aufruf 6
print(z, y); // Aufruf 7
print(y, x); // Aufruf 8
b) Gegeben seien die Klassen A, B und C, wobei B von A und C von B abgeleitet ist, sowie die folgenden
Klassen:
Java:
public class Print1 {
int x = 3;
public void print(A a) { System.out.println(x); }
public void print(B b) { System.out.println(x+1); }
}
public class Print2 extends Print1 {
int x = 7;
public void print(A a) { System.out.println(x); }
public void print(B b) { System.out.println(x+1); }
public void print(C c) { System.out.println(x+2); }
}
WelcheMethode welcher Klasse wird benutzt bzw. was passiert bei folgenden Aufrufen (begründen)?
Java:
A a = new A(); B b = new B(); C c = new C();
Print1 p1 = new Print1();
Print2 p2 = new Print2();
p1 = p2;
System.out.println(p1.x); // Aufruf 1
System.out.println(((Print2)p1).x); // Aufruf 2
((Print2)p1).print(c); // Aufruf 3
p1.print(c); // Aufruf 4
((Print1)p2).print(b); // Aufruf 5
((Print1)p2).print(c); // Aufruf 6
p2.print(c); // Aufruf 7
p1 = new Print1();
((Print2)p1).print(a); // Aufruf 8
Wie gesagt, es geht mir nicht um eine Lösung, das macht den Spaß dran kaputt, aber ein Denkanstoß wäre ganz nett
Grüße Lukas