Я думаю, что лучший подход состоит в создании класса Class, от кого классных и ClassExam наследует.
Класс отца ClassF объявит эти общие атрибуты, а остальные 2 подкласса должны будут объявить те конкретные атрибуты, которые делают их уникальными, потому что общие из них подразумеваются наследованием.
Попробую объяснить на примере:
ClassF -> attributes: name, ID, weight, Date
-> methods: getName() ....
Exam -> attributes: marks
-> methods: calculateMarks()...
CourseWork -> attributes: typeOfCourse
-> methods: printInfoCourse()...
подклассов экзамен и курсовую работу можно реализовать и использовать, например, идентификатор из ClassF, потому что он унаследовал от своего отца класса.
Может быть, это хорошая идея, чтобы решить, если вы хотите разрешить создание экземпляра ClassF или нет, потому что в этом случае было бы интересно превратить ClassF в абстрактный класс ..
Только для запись в этом конкретном случае использование интерфейса для реализации этих классов является неправильным подходом, потому что это не функция интерфейса (https://docs.oracle.com/javase/tutorial/java/concepts/interface.html для получения дополнительной информации)
Надеюсь, это поможет!
Мне нравится идея этого. Поэтому скажите, что я хотел добавить, например, вес конкретной учебной программы или экзамена. Пример: Курсовая работа 1 = 25%, Курсовая работа 2 = 25% и Экзамен = 50%. Как бы это реализовать? Каким будет подход? Также, что, если я хочу иметь несколько курсов или экзаменов? не нужны ли им свои идентификаторы? –
ClassF есть этот способ, правильно? Таким образом, в подклассах есть тоже, но вы хотите различное поведение для каждого подкласса, и в этом случае вам нужно сделать @overrided из метода ClassF. Это зависит от вас, если вы хотите полностью изменить его или добавить только некоторые функции. Кстати, это полиморфизм! – Jessica
См. Http://stackoverflow.com/questions/3311788/when-to-implement-an-interface-and-when-to-extend-a-superclass –