Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

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

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

Вопрос 2: Так же, допустим, что у базового класса есть свои конструкторы: 1. пустой; 2. имя и тип; 3. имя и булевые поля. В том же производном классе, если я так же хочу сделать точно такие же конструкторы, мне нужно наследовать все конструкторы при помощи super?

По дате
По рейтингу
Аватар пользователя
Оракул

1. Если вы хотите изменить значения полей в производном классе, вы можете сделать это в конструкторе производного класса. Вот пример:

123456789
 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 не наследует конструкторы по умолчанию. Вот пример:

1234567891011121314151617
 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, если это необходимо.