В Java в процессе создания подкласса должен быть вызван конструктор его родительского класса. Это связано с тем, что при наличии отношения наследования подкласс должен наследовать содержимое родительского класса. Каким образом?
Ответ следующий:
Когда вы создаете новый объект подкласса, вы должны сначала создать новый объект родительского класса. Этот объект родительского класса находится внутри объекта подкласса. Следовательно, объект подкласса больше, чем объект родительского класса. реальная ситуация в памяти. Когда метод построения является новым объектом, его необходимо вызвать. Это правило. Если вы хотите создать новый объект родительского класса, вы должны вызвать его метод построения, поэтому:
Первое правило: в процессе создания подкласса необходимо вызвать метод построения его родительского класса. Для класса, если мы не пишем конструктор, компилятор поможет нам добавить конструктор по умолчанию. Так называемый конструктор по умолчанию — это конструктор без параметров, но если вы напишете конструктор самостоятельно, то компилятора его не будет. добавлено для вас, поэтому иногда при создании нового объекта подкласса необходимо вызвать конструктор подкласса, но в конструкторе подкласса мы не вызываем явно конструктор базового класса, то есть нет записи , например: super(); не пишется так, но вызывает конструктор без параметров родительского класса. Если в родительском классе нет конструктора без параметров, произойдет ошибка.
Второе правило: если в конструкторе подкласса нет явного вызова конструктора базового класса, система по умолчанию вызывает конструктор базового класса без параметров. Примечание. Если в конструкторе базового класса нет явного вызова конструктора базового класса. конструктор подкласса, а в базовом классе нет конструктора без параметров, возникает ошибка компиляции. Поэтому обычно нам нужно отобразить: super (список параметров) для вызова конструктора родительского класса с параметрами.
//Если вы определяете новый конструктор
public Animal (строковое имя) {
это.имя = имя;
}
}
общественная собака расширяет Animal {
//В это время вам необходимо явно вызвать конструктор родительского класса, поскольку подкласс по умолчанию вызывает родительский класс.
//Нет конструктора параметров Animal()
общественная собака () {
super("puppy"); //Отображение параметризованного метода конструктора вызова родительского класса
.... //Обработка метода конструктора подклассов
}
}
//Конечно, если вы явно пропишете конструктор без параметров в родительском классе, например:
класс Животное {
частное имя строки;
//Метод построения без параметров
общественное животное() {
..... //иметь дело с
}
/*
Если вы определяете новый конструктор, то в конструкторе подкласса вы можете вызвать конструктор родительского класса, не вызывая его явно, поскольку подкласс имеет конструктор без параметров.
Подкласс автоматически вызовет конструктор без параметров, определенный родительским классом в конструкторе.
*/
public Animal (строковое имя) {
это.имя = имя;
}
}