Guten Tag allerseits
,
Ich schreibe morgen eine Präsenzübung und bin grad an einer Aufgabe hängen geblieben. DIe Lösung hab ich schon aber verstehe etwas nicht. Dazu folgender Code:
so wie ich im Code schon kommentiert habe verstehe ich die letzte Aussage 5.0 nicht. Ich hätte hier eher auf public void f(int x) der Klasse B zugregriffen da ja der Parameter von a.f(10) ein int ist und somit 25.0 erhalten... Wieso wird hier auf public void f(double x) der Klasse B zugregriffen? Danke schonmal für die Antwort
.
Ich schreibe morgen eine Präsenzübung und bin grad an einer Aufgabe hängen geblieben. DIe Lösung hab ich schon aber verstehe etwas nicht. Dazu folgender Code:
Java:
public class A {
public static double x = 1;
public A(){
this(4);
}
public A(double x){
A.x += x;
}
public void f(double x){
x += 2*x;
}
}
public class B extends A {
public int y = 3;
public B(int x){
super();
y++;
}
public void f(int x){
A.x += x;
}
public void f(double x){
A.x -= x;
y--;
}
}
public class M {
public static void main(String[] args) {
A a = new A(A.x);
System.out.println(a.x); // OUT: 2.0
a.f(10);
System.out.println(a.x); // OUT: 2.0
B b = new B(10);
System.out.println(b.x+" "+b.y); // OUT: 6.0 und 4
b.f(10);
System.out.println(b.x); // OUT: 16.0
a = b;
a.f(1.0);
System.out.println(a.x+" "+b.y); // OUT 15.0 und 3
a.f(10);
System.out.println(a.x); // OUT 5.0 diese ausgabe verstehe ich nicht?!
}
}
so wie ich im Code schon kommentiert habe verstehe ich die letzte Aussage 5.0 nicht. Ich hätte hier eher auf public void f(int x) der Klasse B zugregriffen da ja der Parameter von a.f(10) ein int ist und somit 25.0 erhalten... Wieso wird hier auf public void f(double x) der Klasse B zugregriffen? Danke schonmal für die Antwort