0 голосов 2662 просмотра 24.07.2017 / 04:27
Витаминыч
Можно ли геттеры и сеттеры класса вынести в отдельный интерфейс?Можно ли так делать?
24.07.2017 / 06:00
Death
Ответы
3 голоса -1 голос
EBlockType.java
IDrawable и IBlock очевидно, что содержат. Далее наследник BlockSand.java
Вот такая дичь в голову пришла не проверял в IDE, почему-то был уверен, что будет работать, а сегодня начал сомневаться.
24.07.2017 / 11:01
Death
Блин, меня бесит, класс абстрактный, а методы реализованы и пусты. (Block)Вообще не вижу тут смысла. Даже у меня плохо с ООП, но я тут вижу много ошибок в логике.
24.07.2017 / 11:18
aNNiMON
Death, перечисли ошибки.
24.07.2017 / 11:31
Death
Ну одну я назвал, то что класс сделал абстрактным, а методы реализовал пустыми. Второе, я не вижу смысла в IBlock. Это лишние. Блок - объект. Он внутри себя через гетеры и сетеры меняет поля. А если сделать это наследникам класса блок, то им или свои поля для это делать или пользоваться блока полями. Что уже плохо. Есть что нужно от блока переопределить, то наследовать его и перепределить метод какой-то один, а не всем. Много отвественности будет на наследниках таким способом.
24.07.2017 / 11:32
Death
Втретьих, если убрать Block и оставать IBlock, и тогда его реализовавать, то уже больше смысла и логики.
24.07.2017 / 11:51
aNNiMON
То, что класс абстрактный, но методы просто пустые, это нормально. Абстрактный класс не даст создать экземпляр объекта, а пустые методы говорят о том, что их можно переопределить, но не обязательно.Насчёт IBlock согласен. Грубо говоря, интерфейс это абстрактный класс, у которого все методы абстрактные. Так зачем для одного абстрактного класса добавлять ещё один?
24.07.2017 / 11:52
aNNiMON
Ещё одна ошибка заключается в том, что методы, которые подлежат переопределению вызываются в конструкторе. Любая IDE выдаст на этих строках предупреждение.А ещё, что за сишарп в моей джавке? За использование C#-конвенций джава-господы опускают и плюют в лицо. Никаких IBlock и EBlockType.
24.07.2017 / 13:50
Витаминыч
Володя, ты так и не смотрел то, что я тебе скинул по ссылке.. а ну бегом читать!Ишь ты, абстрактный класс ему не нравится! Прежде чем минусить, разберись в вопросе . И еще раз подумай над своими Ataka.class и AtakaObj.class aNNiMON, каюсь, давно на яве не писал Ну то пример
24.07.2017 / 13:55
Витаминыч
Насчет переопределеннх методов: почему не стоит их в конструктор пихать?Много где видел такую запись, все работает.
24.07.2017 / 14:48
Death
aNNiMON, вот, момент спросить. Почему из конструктор нельзя вызывать public методы класса?Витаминыч, я был прав Витя меня поправил, что не так было. У меня именно в Java больше опыта. А у тебя вообще по разным языкам разброс знания. Есть мину и плюсы. А то что Ataka.class и AtakaObj.class было полгода назад. Так что это не считается. Было ведь давно, а я программировал, читал, набивал скилл.
24.07.2017 / 15:48
Arigato
1. Вызов переопределяемых методов может привести к немного неожиданному поведению. Насколько помню, будут вызываться методы родительского класса, а не текущего.2. Я бы поспорил о ненадобности IBlock. Если бы он имел только геттеры, то его можно было бы спокойно отдавать любому клиентскому модулю.
24.07.2017 / 15:50
aNNiMON
java - What's wrong with overridable method calls in constructors? - Stack Overflow
24.07.2017 / 16:28
Death
aNNiMON, а можно по русски в пару слов объеснить?
24.07.2017 / 18:36
Витаминыч
Ладно, возвращаюсь к С#, Java какая-то немодная
24.07.2017 / 18:58
Death
На С# собрался... Удачи.
-1 голос -2 голоса Всего: 4
|
Реклама |