Не могу никак определиться, чем воспользоваться.
Есть несколько зданий например (Ратуша, ферма и башня) у каждой есть хп, но у фермы нет брони, а башня умеет атаковать, как лучше, реализовать интерфейс здания или абстрактный класс (И такой вопрос, придется задавать в каждом хп, через интовскую переменную, нужно ли указывать ее в абстрактном классе ?)
Java
Абстрактный класс или интерфейс (java)
Подход должен быть следующий : Делаешь пустой базовый класс - от него наследуешся, замечаешь общий код - выносишь его в базовый класс; Видишь общие методы (которые должны быть видны снаружи) выносишь их в интерфейс. Абстрактный класс с приходом java8 стал рудиментарным его можно игнорировать (до тех пор пока не почувствуешь тонкую грань между интерфейсом классом и абстрактным-классом).
ну в натуре. Ты же не научную работу пишешь, и 10 000 гугл програмистам с твоим кодом не работать. Лучший совет от меня, делай как проще и как тебе понятнее. Уж поверь, нах никому твоя цепочка наследований интерфейсов не нужна, только если ты не один из 10 000 тех самых и остальные 9999 не должны будут понять твою мысль.
На одинаковый функционал пишешь интерфейсы типа стрелок (может стрелять)
башня стреляет солдат стреляет, но башня здание а солдат единица, разные объекты но с общим функционалом. Логику выстрела тоже вынести нужно в отдельный класс. Типа ЮнитЛогиксо статическими методами. Так каждый объект реализующий интерфейс стрелок будет обращаться внутри преопределенных методов к статическим методам этого класса ЮнитЛогик. Расчет в одном месте. Но только так, если реально видишь разницу, то разделяй. Если один делает пук вправо другой пук влево, не надо городить лишнюю цепочку наследования (бесполезную). Ты должен хорошо подумать нужно ли это тебе, твоей маме, друзьям или господу богу, и только тогда создавай новую иерархию наследования.
На одинаковый функционал пишешь интерфейсы типа стрелок (может стрелять)
башня стреляет солдат стреляет, но башня здание а солдат единица, разные объекты но с общим функционалом. Логику выстрела тоже вынести нужно в отдельный класс. Типа ЮнитЛогиксо статическими методами. Так каждый объект реализующий интерфейс стрелок будет обращаться внутри преопределенных методов к статическим методам этого класса ЮнитЛогик. Расчет в одном месте. Но только так, если реально видишь разницу, то разделяй. Если один делает пук вправо другой пук влево, не надо городить лишнюю цепочку наследования (бесполезную). Ты должен хорошо подумать нужно ли это тебе, твоей маме, друзьям или господу богу, и только тогда создавай новую иерархию наследования.
Похожие вопросы
- Чем абстрактный класс отличается от интерфейса?
- Подскажите зачем в Яве интерфейсы и абстрактные классы
- как правильней организовывать абстрактный класс JAVA
- какая разница между интерфейсом и абстрактным классом? И есть она принципиальная ?. Приведите примеры.
- Зачем в Java придумали абстрактные классы?
- Как создать программу (Java), чтобы была не консольной, а с интерфейсом GUI
- Всем привет. Помогите плз. Мне нужна помощь тех кто действительно хорошо знает Java т. к мне нужно выбрать один из курсов
- Можно ли реализовать полиморфизм (Java) с общим конструктором для разных дочерних классов?
- Помогите доделать код на java. В форму пользователь вводит символ, который нужно заменить на #.
- Не выводит изображение в JAVA