0 голосов 2851 просмотр 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 
                 | 
                                    
                                                
                        
            Реклама |