Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2023, 21:35   #1
IgorJavaMan
Новичок
Джуниор
 
Регистрация: 22.01.2023
Сообщений: 3
По умолчанию Ключевое слово super

Объясните, пож., нубу, как работает ключевое слово супер:

Делаю базовый класс

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); -- в данном контексте ошибка.

Почему ошибка, и как мне скопировать значения родительского класса в конструктор наслоедуемого класса, а далее в объект. ?
IgorJavaMan вне форума Ответить с цитированием
Старый 22.01.2023, 22:09   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от IgorJavaMan Посмотреть сообщение
Почему ошибка
потому что у родителя нет конструктора с одним параметром инт

Цитата:
Сообщение от IgorJavaMan Посмотреть сообщение
и как мне скопировать значения родительского класса в конструктор наслоедуемого класса, а далее в объект. ?
через точку
p51x вне форума Ответить с цитированием
Старый 22.01.2023, 22:24   #3
IgorJavaMan
Новичок
Джуниор
 
Регистрация: 22.01.2023
Сообщений: 3
По умолчанию

p51x,

Т.е. У парента конструктор должен выглядеть вот так:
Т.е. конструктор в Parent должен был выглядеть вот так:

public Parent( int age) {
this.age=16;
}

??


а у наследуемого класса:

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

IgorJavaMan вне форума Ответить с цитированием
Старый 24.01.2023, 12:17   #4
IgorJavaMan
Новичок
Джуниор
 
Регистрация: 22.01.2023
Сообщений: 3
По умолчанию

Может кто подсказать?
IgorJavaMan вне форума Ответить с цитированием
Старый 24.01.2023, 13:42   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от IgorJavaMan Посмотреть сообщение
Т.е. У парента конструктор должен выглядеть вот так:
Никому он ничего не должен. Это решаете вы.

Цитата:
Сообщение от IgorJavaMan Посмотреть сообщение
Т.е. конструктор в Parent должен был выглядеть вот так:
А остальные поля так оставите?

Цитата:
Сообщение от IgorJavaMan Посмотреть сообщение
а у наследуемого класса:
В итоге 2 поля в перенте неинициализорованы и одно в наследнике.
p51x вне форума Ответить с цитированием
Старый 12.03.2023, 18:15   #6
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Цитата:
Сообщение от IgorJavaMan Посмотреть сообщение
p51x,

Т.е. У парента конструктор должен выглядеть вот так:
Т.е. конструктор в Parent должен был выглядеть вот так:

public Parent( int age) {
this.age=16;
}

??


а у наследуемого класса:

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

Код:
public Parent( int age) {
this.age=age;
}
vvmcpp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ключевое слово base hoz Общие вопросы .NET 7 30.09.2015 07:55
ключевое слово this ryouzaki Помощь студентам 1 14.02.2014 03:41
Ключевое слово в с++ Юлия Набиева Помощь студентам 3 12.03.2013 14:36
зачем нужно ипользовать ключевое слово super? Syltan Общие вопросы по Java, Java SE, Kotlin 16 20.05.2010 19:06