Jawa / Говнокод #13691 Ссылка на оригинал

0

  1. 1
http://www.quizful.net/interview/java/k4gCs7Qmf8YF

Мне кажется, или кто то накурился?

если я не прав - обьяните(

Запостил: kegdan kegdan, (Updated )

Комментарии (18) RSS

  • Мутноватый ответ какой-то. А какой конкретно момент интересует?
    Ответить
    • Ну ведь ответ не верен.
      какая разница, как обращаться, эффект будет один и то же. Только если не перегрузить свойство
      Ответить
      • Геттер/сеттер позволяют сделать поле вычислимым и/или полиморфным, т.е. предоставляют абстракцию данных. В ответе написан несвязный бред.
        Ответить
        • не побоюсь показаться нубом - что значит вычислимым?

          А полиморфным... можно конечно, но, имхо, если поле нуждается в особом обращении в каждом классе - нужно делать явные полиморфные методы Get и Set.
          Ответить
          • > что значит вычислимым
            Ну т.е. поля физически нет. Геттер считает его значение на лету. Сеттер, если есть, пишет куда-нибудь в другое поле.

            Пример:
            private int left, top;
            private int width, height;
            
            int getBottom() {
                return top + height;
            }
            
            void setBottom(int y) {
                height = y - top;
            }
            Ответить
            • значит я просто название не знал, мое чсв в норме)
              Ответить
          • > если поле нуждается в особом обращении в каждом классе - нужно делать явные полиморфные методы Get и Set.
            Эээ, а геттер и сеттер это что? 🙂

            UPD: А тьфу, вы же с шарпика пришли. Так вот, в жабе, в отличие от шарпа, нет свойств. И геттер и сеттер это самые обычные методы, ничем не отличающиеся от других.
            Ответить
            • а в шарпе есть какое-то принципиальное (кроме синтаксиса конечно) отличие свойств от отдельных гет/сет методов?
              Ответить
              • Они явно не вызываются

                private int _ineg;
                public int Ineg
                {
                get { return _ineg+5; }
                set { _ineg = value; }
                }

                var a = Ineg - вызывается геттер
                Ineg = 10 - вызывается сеттер

                На этом - все
                Ответить
                • Ну и не получится из отделить и полиморфнуть только set или гет
                  Ответить
                      • Важно упомянуть, что свойства также позволяют получить геттер и сеттер по умолчанию.
                        public int foo { get{} set {} }
                        (или как-то так). Тогда поле private int _foo; описывать явно не нужно, но оно создастся автоматически. А если всё же описать такое поле явно, то будут коры с конфликтами имён. Это ж шарп.
                        Вот такое автоматическое свойство можно создать у предка, а после перегрузить. Кода сэкономится пару строк.
                        Ответить
        • А я сначала хотел поспорить, но потом перечитал и... да, бред.
          Ответить
      • Я всякую херню всегда читаю по диагонали, даже не глядя на сниппеты кода. Вот наткнулся на фразу "ожидаемое обращение к методам экземпляра подкласса, вызывающее в свою очередь обращение к полю подкласса", и подумал, что он где-то выше написал субкласс с перегруженным геттером и сеттером...

        Челу стоит дополнить свой ответ кодом сабкласса, в котором перегружены геттер и сеттер, тогда будет более-менее верно 😉
        Ответить
  • нет, налицо более тяжёлые наркотики и сезонные осложнения нубизма.
    Ответить
  • Мне показалось, что этот кто-то начитался Java Puzzlers. Если плевать на правила, то таких глюков можно поймать, что 2*2==5 будет.
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8