Folgender Code:
Hey,
Ich verstehe hierbei leider überhaupt nicht, wie man bei der letzten Ausgabe auf das Ergebnis 5.0 kommt. Ich hätte gedacht, dass man im letzten schritt bei a.f(10) System.out.println(a.x); die f Methode mit dem int verwendet und somit auf das Ergebnis 25 kommt, da der übergebene Parameter mit 10 ja einen int darstellt.......Komme einfach nicht drauf wieso hierbei die f Methode mit dem double verwendet wird? Ich habe noch ein wenig experimentiert und gesehen, dass die Zeile a = b eine entscheidende Rolle hierbei spielt, jedoch komm ich leider zu keinem Ergebnis. Kann mir das jmd vlt erklären?
Lg
Java:
public class A {
public static double x = 1;
public A() {
this(4);
}
public A(double x){
A.x= x+A.x;
}
public void f(double x) {
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); --> 2.0
a.f(10);
System.out.println(a.x); --> 2.0
B b = new B(10);
System.out.println(b.x+ " " + b.y); --> 6.0 4
b.f(10);
System.out.println(b.x); --> 16
a = b;
a.f(1.0);
System.out.println(a.x+" "+b.y); --> 15 3
a.f(10);
System.out.println(a.x); --> 5.0
}
}
Hey,
Ich verstehe hierbei leider überhaupt nicht, wie man bei der letzten Ausgabe auf das Ergebnis 5.0 kommt. Ich hätte gedacht, dass man im letzten schritt bei a.f(10) System.out.println(a.x); die f Methode mit dem int verwendet und somit auf das Ergebnis 25 kommt, da der übergebene Parameter mit 10 ja einen int darstellt.......Komme einfach nicht drauf wieso hierbei die f Methode mit dem double verwendet wird? Ich habe noch ein wenig experimentiert und gesehen, dass die Zeile a = b eine entscheidende Rolle hierbei spielt, jedoch komm ich leider zu keinem Ergebnis. Kann mir das jmd vlt erklären?
Lg
Zuletzt bearbeitet von einem Moderator: