class Foo {
int number;
public Foo(int x) {
number = x;
multiply();
}
public void multiply() {
number = 2 * number;
}
public int getNumber() {
return number;
}
}
class Bar extends Foo {
int number;
public Bar(int x,int y) {
super(x);
number = y;
multiply();
}
public void multiply() {
number = number * 3;
}
}
class Test {
public static void main(String args[]) {
Foo foo = new Foo(42);
Foo bar = new Bar(42,24);
System.out.println(foo.getNumber() + "\n" + bar.getNumber());
}
}
Результат этого кода - 84 и 42, но как бы я его не проследил, я получаю 84 и 72. Может кто-нибудь объяснить это подробно.Наследование в классах Java
Можете ли вы показать, как вы отслеживаете его, чтобы получить '72'? – Pshemo
24 * 3 действительно 72. Я не вижу здесь проблемы? – Stultuske
В заявлении Foo bar = new Bar (42,24); называется конструктором Bar, который вызывает конструктор Foo, который вызывает функцию умножения, которая удваивает Foo.number. Затем Bar.number должен быть сделан 72, потому что в его конструкторе вызывается умножение, которое утроивает значение. Однако ответ 42. Не 72. –