Страницы

Поиск по вопросам

пятница, 7 декабря 2018 г.

Вызов конструктора класса родителя в Java. В чём важность?

Доброго времени суток всем. Читая книгу Брюса Эккеля, натолкнулся на следующий текст:
Конечно, очень важно, чтобы подобъект базового класса был правильно инициализирован, и гарантировать это можно только одним способом: выполнить инициализацию в конструкторе, вызывая при этом конструктор базового класса, у которого есть необходимые знания и привилегии для проведения инициализации базового класса. Java автоматически вставляет вызовы конструктора базового класса в конструктор производного класса.
Помогите разобраться, почему же так важно вызвать конструктор базового класса для класса наследника? И что будет если это не произойдёт (теоретически)? Спасибо.


Ответ

Базовый класс по сути является как-бы частью наследника. Поэтому, если он не будет проинициализирован, то работать ничего не будет.
Пример:
public class A { protected int valA = 1; }
public class B extends A { protected int valB = 2; public int getVal(){ return valB + valA; } }
Наследование позволяет писать такую конструкцию. Если родительский класс не будет инициализировн, то в строке return valB + valA; будет неизвестно значение valA.
Насколько я понимаю, не может быть ситуации, когда конструктор базового класса не вызовется (поправьте меня, если я ошибаюсь). Пример автоматического вызова конструкторов базовых классов

Комментариев нет:

Отправить комментарий