Верно ли тут используется обращение к суперклассу?

Рейтинг: 1Ответов: 1Опубликовано: 21.11.2014

В учебнике в главе «Наследование» был предложен код программы, объясняющей принцип использования указателя super(). Но у меня возник вопрос: а верно ли то что написано в этом коде, или же это все таки опечатка. Если верно, то просьба помочь разобраться в строках, которые я закомментировал. Ниже код

class X {

    int a;

    X(int i) {

        a = i;
    }

    class Y extends X {

        int b;

        Y(int i, int j) {

            super(j);
            b = i;
            // Не должно ли быть так?
            //super(i);
            //b = j;

        }

    }

}

Ответы

▲ 3

С точки зрения синтаксиса программа написана верно. А вот с точки зрения логики - она не очевидна. По-хорошему, нужно было бы написать, как вы и указали, хотя бы, чтобы не запутывать обучающегося. В реальных же проектах, такое возможно: все зависит от логики классов, задачи, от стиля их проектировщика и т.п.

Но вам здесь не нужно акцентировать на этом внимание, вам главное понять работу super. А именно: что здесь из пользовательского конструктора производного класса произойдет вызов пользовательского конструктора базового класса, передав ему значение параметра j (вместо j могло стоять любое число, это уже зависит от логики класса.)