Доброго времени суток всем. Читая книгу Брюса Эккеля, натолкнулся на следующий текст:
Конечно, очень важно, чтобы подобъект базового класса был правильно
инициализирован, и гарантировать это можно только одним способом:
выполнить инициализацию в конструкторе, вызывая при этом конструктор
базового класса, у которого есть необходимые знания и привилегии для
проведения инициализации базового класса. 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.
Насколько я понимаю, не может быть ситуации, когда конструктор базового класса не вызовется (поправьте меня, если я ошибаюсь). Пример автоматического вызова конструкторов базовых классов
Комментариев нет:
Отправить комментарий