Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Наследование в Java

Алексей Пахомов Ученик (11), на голосовании 1 год назад
Вопрос 1: Допустим есть базовый класс Animal с полями: type; name; isWalk, isFly, isSwim. Я хочу создать производный класс cat. По умолчанию, в базовом классе булевые поля isWalk, isFly, isSwim инициализируются False. Что если я хочу для производного класса изменить значение? Как это сделать? (интересует именно синтаксис)

Вопрос 2: Так же, допустим, что у базового класса есть свои конструкторы: 1. пустой; 2. имя и тип; 3. имя и булевые поля. В том же производном классе, если я так же хочу сделать точно такие же конструкторы, мне нужно наследовать все конструкторы при помощи super?
Голосование за лучший ответ
Sergio 2.1 Оракул (67303) 1 год назад
1. Если вы хотите изменить значения полей в производном классе, вы можете сделать это в конструкторе производного класса. Вот пример:
 public class Cat extends Animal { 
public Cat(String name) {
super(name, "Cat");
this.isWalk = true;
this.isFly = false;
this.isSwim = false;
}
}
В этом примере, мы вызываем конструктор базового класса super(name, "Cat"), а затем устанавливаем значения полей isWalk, isFly и isSwim.

2. Да, если вы хотите использовать конструкторы базового класса в производном классе, вам нужно вызвать их с помощью super(). Java не наследует конструкторы по умолчанию. Вот пример:
 public class Cat extends Animal { 
public Cat() {
super();
}

public Cat(String name, String type) {
super(name, type);
}

public Cat(String name, boolean isWalk, boolean isFly, boolean isSwim) {
super(name);
this.isWalk = isWalk;
this.isFly = isFly;
this.isSwim = isSwim;
}
}
В этом примере, каждый из конструкторов Cat вызывает соответствующий конструктор Animal с помощью super(). Затем мы можем установить дополнительные поля в конструкторе Cat, если это необходимо.
tenzoriatorЗнаток (308) 1 год назад
Чем-то попахивает этот ответ...)
Похожие вопросы