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

Всем привет.
Подскажите пожалуйста верно ли я реализовал цепочку наслеодвания?
public class University{}
public class Faculty extends University {}
public class Group extends Faculty {}
public class Student extends Group {}
Если не сложно, объясните что не так. Спасибо
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Не верно.
Легче понять вашу ошибку, если проговорить словами код написанный вами.
Вот, ваш код:
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
Нет, не верно.
Потому что у вас факультет, группа и студент - всё является университетом.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы