Прошу объяснить результат компиляции

class A{

int a = 3;

int returnA(){
    System.out.println("Klass A"+a);
    return a;
}

}

class B extends A{

int a = 5;

int returnA(){
    System.out.println("Klass B"+a);
    return a;
}

    public static void main(String[] args) {
        A test1 = new B();
        System.out.println(test1.a+" "+test1.returnA());
    }
}

Почему output данного кода будет:

Klass B5

3 5

а не

3 Klass B5

5

Ответы (1 шт):

Автор решения: Igor

Потому что действия выполняются в таком порядке

public static void main(String[] args) {
    A test1 = new B();
    int __temp1 = test1.returnA(); // -> Klass B5
    String __temp2 = test1.a+" "+__temp1;
    System.out.println(__temp2);   // -> 3 5
}
→ Ссылка