Hallo zusammen,
leider verstehe ich folgendes nicht und habe es auch in IDE versucht laufen zu lassen, aber komme nicht dahinter, warum b = 0 gesetzt wird. Wenn das Objekt A a = new B(2, 3); erzeugt wird, dann geht es zum Konstruktor B(int a, int b), weil es zwei Parameter beim Objekt hat und danach geht es zu super(a) und dieses ruft den Konstruktor von A auf und geht zu this.a = a, welches dann 2 ist. Dann wird 2 ausgegeben bei this. Anschliessend geht es doch zu this.b = b; Ist dann b = 0, weil es in Konstruktor b nicht init. wurde oder ist es 3, weil es bei der Objekterzeugung mitgegeben wurde? Dann geht es zu toString, welches 2 0 ausgibt, aber warum 0? Warum braucht es ein toString Methode, man könnte doch in der main einfach System.out.println machen oder nicht?
leider verstehe ich folgendes nicht und habe es auch in IDE versucht laufen zu lassen, aber komme nicht dahinter, warum b = 0 gesetzt wird. Wenn das Objekt A a = new B(2, 3); erzeugt wird, dann geht es zum Konstruktor B(int a, int b), weil es zwei Parameter beim Objekt hat und danach geht es zu super(a) und dieses ruft den Konstruktor von A auf und geht zu this.a = a, welches dann 2 ist. Dann wird 2 ausgegeben bei this. Anschliessend geht es doch zu this.b = b; Ist dann b = 0, weil es in Konstruktor b nicht init. wurde oder ist es 3, weil es bei der Objekterzeugung mitgegeben wurde? Dann geht es zu toString, welches 2 0 ausgibt, aber warum 0? Warum braucht es ein toString Methode, man könnte doch in der main einfach System.out.println machen oder nicht?
Java:
abstract class A {
protected int a;
public A(int a){
this.a = a;
System.out.print(this);
}
}
class B extends A{
private int b;
public B(int a, int b){
super(a);
this.b = b;
}
public String toString(){
return "Objekt B: " + a + b;
}
public static void main(String [] args){
A a = new B(2,3);
}
}