Либо сделайте Journey
продление JFrame
, либо сделайте Journey
интерфейсом.
Выберите вариант, наиболее подходящий для вашей структуры объекта.
Если имеет смысл для Journey
расширить JFrame
, тогда сделайте это.Таким образом, когда PlannedJourney
расширяет Journey
, он также наследует все, что Journey
делает от JFrame
.
Если это не имеет смысла, тогда сделайте Journey
интерфейсом и получитеPlannedJourney
агрегат Journey
.PlannedJourney
не сможет наследовать какой-либо код от Journey
, но вы сможете наследовать сигнатуры методов и передавать объект как Journey
в дополнение к JFrame
.
Убедитесь, что при работе с Swing вы отделяете модель от View .Ваши данные должны храниться в одном наборе объектов ( Модель ), а компоненты Swing для отображения этих данных должны быть отдельным набором объектов ( View ).Это помогает инкапсулировать функции данных, отделять их от объектов графического интерфейса и обеспечивать одностороннюю зависимость View от Model .Учтите, что объект Journey
, возможно, должен отображать JourneyFrame
.Таким образом, JourneyFrame
может позаботиться о его отображении, может расширить JFrame
и содержать только ссылку на Journey
, которая может иметь свою собственную иерархию.