Необходимо ли статическое позднее связывание для перегрузки статических переменных? - PullRequest
1 голос
/ 06 ноября 2011

Мой друг спросил меня, может ли он переопределить статическую переменную в Java, и я был шокирован, что он даже подумал о таком странном способе кодирования.Затем он объяснил мне, что это возможно в PHP, и я хочу знать, есть ли веские причины, по которым хороший разработчик должен это делать.По моему мнению, статические члены характеризуются как члены класса и не имеют отношения к объекту, и поэтому они не имеют отношения к происхождению классов, но я не могу убедить его, так как он такой наивный и упрямый.

Может кто-нибудь дать либохороший аргумент против всего этого или убедить меня, что это крутая особенность?

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Статическое наследование не имеет никакого смысла.Дело не в том, что это невозможно, просто в том, что вы не получаете от этого никакой выгоды.

При обычном наследовании вы получаете преимущество, заключающееся в том, что у одной и той же вещи есть другая реализация, и вы не знаете, какая реализация будет использоваться.Со статическим наследованием у вас нет объекта для работы, и вы используете имя класса, поэтому вы не можете воспользоваться преимуществами полиморфизма.

Например, если вы вызываете Child.someMethod (), вы привязаны к реализацииребенка, и если вам действительно нужен родитель, вы можете просто сделать Parent.someMethod () вместо этого.Если вам нужно что-то добавить в реализацию Parent, вы просто создаете Child.someOtherMethod (), где вы вызываете родителя и делаете после этого некоторые другие вещи.Статическое наследование - просто синтаксический сахар ...

0 голосов
/ 06 ноября 2011

Насколько я знаю, ключевое слово static в Java используется для определения переменных класса. Переменная класса имеет один экземпляр для всех объектов этого класса. Так что в Java вы не можете переопределить статическую переменную, это не имеет смысла. Любые изменения, внесенные в статическую переменную в одном классе, распространяются на другой класс. Вот для чего в JAVA используется статика.

Это то же самое, что ДОЛЖНО РАБОТАТЬ в PHP (на самом деле я не эксперт по PHP), но если ваш друг может предоставить код, показывающий, что статическая переменная в PHP была переопределена, и переменная имеет другое значение, чем в другом классе Я буду очень рад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...