Верно ли я указал наследование в Java проекте?

Всем привет.
Подскажите пожалуйста верно ли я реализовал цепочку наслеодвания?
public class University{}
public class Faculty extends University {}
public class Group extends Faculty {}
public class Student extends Group {}
Если не сложно, объясните что не так. Спасибо
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Не верно.
Легче понять вашу ошибку, если проговорить словами код написанный вами.
Вот, ваш код:
public class University{}
public class Faculty extends University {}
public class Group extends Faculty {}
public class Student extends Group {}

Итак, вы говорите, что есть некий Университет
Факультет РАСШИРЯЕТ Университет. Уже нестыковка. Ведь, в Университете ИМЕЮТСЯ Факультеты. Далее вы говорите, что Группа расширяет Факультет. Что тоже нелогично, ибо каждый факультет ВКЛЮЧАЕТ в себя группы.
Дальше вы говорите, что Студент расширяет класс Группы. Тоже ведь, нелогично, так как каждая группа содержит в себе некоторое количество студентов.

Более корректным будет следующая реализация:
public class University {
private List<Faculty> faculties;
}
public class Faculty{
private List<Group> groups;
}
public class Group{
private List<Student> students;
}
public class Student {}

Притом вместо List можно использовать Set, так как каждый факультет уникален, также как и группа и студенты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Наследование тут вообще не нужно, нужна агрегация.
Ответ написан
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Нет, не верно.
Потому что у вас факультет, группа и студент - всё является университетом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
The AnyLogic Company Санкт-Петербург
от 180 000 ₽
Emphasoft Санкт-Петербург
от 200 000 до 400 000 ₽
от 140 000 до 230 000 ₽
07 мар. 2021, в 03:18
1500 руб./за проект
06 мар. 2021, в 22:58
70000 руб./за проект
06 мар. 2021, в 22:36
10000 руб./за проект