Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Ключевое слово super


Автор: Noobie 24.1.2023, 12:34
Делаю базовый класс
Код

public class Parent {
private String name;
protected int age;
private int weight;

public Parent(String name, int age, int weight) {
this.age=16;
this.name = name;
this.weight = weight;
}

делаю от него наследника:
Код

public class Cat extends Parent{
private String name;
private int age;
private int weight;

public Cat(int age, String name, int weight) {
super(age);
this.name=name;
this.weight = weight;
}

Выдает, что super(age); -- в данном контексте ошибка.

Почему ошибка, и как мне скопировать значения родительского класса в конструктор наслоедуемого класса, а далее в объект. ?

Автор: Се ля ви 24.1.2023, 12:59
super в данном контексте - это вызов конструктора предка. В Java нет необязательных параметров методов и все параметры нужно передавать явно - а в классе предка у единственного конструктора 3 параметра. Так что вызывай с тремя, а не с одним, или определи у предка ещё один конструктор с одним аргументом

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)