Цитата (MiksIr @ 9.02.2014 - 23:09) |
Обычно я спрашиваю, что значит "хочу"? Почему в одном случае вы хотите этого, в другом нет. В этом суть ответа, а не в хотелках. |
я не совсем понимаю, как интерпретировать эти слова, можете более подробно объяснить их смысл.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
MiksIrНа самом деле это вы так думаете, что это хотелка. Ответ же зависит от задачи. Один из моих вариантов - когда я хочу "разветвить" функционал потомков.
_____________
Gear FrameworkGear Framework на Github
Но суть вся лежит в третьем (не по порядку мною перечисленном) принципе ООП.
_____________
Gear FrameworkGear Framework на Github
Цитата (chee @ 9.02.2014 - 22:06) |
linker почему тогда не использовать final ? |
final наследуется и всего лишь не даёт оверрайдить метод, private метод вообще не наследуется.
_____________
Gear FrameworkGear Framework на Github
Цитата (linker @ 9.02.2014 - 23:04) |
наследование и полиморфизм |
мне показалось наследование и пофигизм
linker
10.02.2014 - 00:35
Проблема в том, что для внешнего пользователя класса важен его интерфейс и результат, поэтому private метод или protected не играет никакой роли, private такой же гвоздь, который в случае его использования трогать весьма проблематично ибо придётся трогать другие protected и public гвозди, которые завязаны на его реализации. Беспроблемно убрать можно только те private поля и методы, которые свободны от использования. Поэтому проблемы, а вдруг сломается, надуманны относительно вообще факта существования багов в программном обеспечении.
_____________
Gear FrameworkGear Framework на Github
AllesKlar
10.02.2014 - 01:14
MiksIrСказал, что буду читать, но не отвечать другим не обещал

То, что вы написали (не буду цитировать, много очень) - это простая демагогия.
Вы не преподователь ВУЗа? Им присуще принимать определение только в том понятии, которое они сами понимают.
Самое лучшее на моей памяти определение это было определение рекурсии.
Цитата |
Рекурсия - это Рекурсия (С) Нагорный Сергей Витальевич |
Так вот, было дано четкое определение:
Цитата |
Лично я использую private только тогда, когда не хочу чтобы потомки наследовали от предков, в остальных случаях public или protected. |
И это единственно верное.
Если метод у меня создан исключительно для "служебных" целей, то он будет private и нечего туда совать нос пользователям моего класса.
Если я объявил метод protected, то во всех последующих версиях класса этот медод будет ОБЯЗАТЕЛЬНО возвращать результат в том же формате, в котором возвращал в своей первой версии.
Он может быть расширен с таким учетом, что предыдущее его использование не нарушит его работу.
А для тех кто этого не понимает, на первый курс переучиваться и перестать сдавать зачеты за бабло и коньяк.
_____________
[продано копирайтерам]
AllesKlar
10.02.2014 - 02:01
MiksIr
Цитата |
"что значит "хочу" |
Хочу - это значит примерно следущее:
В ходе проектирования класса, группой архитекторов было принято решение о том, что...
ну, как-так.
_____________
[продано копирайтерам]
linker
10.02.2014 - 08:54
MiksIr
Цитата |
Вот как раз в случае наследования по сути интерфейсом будет набор public+protected |
Никто не спорит.
Цитата |
Учите слово "рефакторинг". Начните с одноименной книжки Фаулера. Ибо то, что вы тут сказали - бред. |
Это вы читайте, у вас видимо много теоретических знаний, а вот практики не очень, я имел ввиду ваши слова:
Цитата |
Тогда как private позволяет вам делать что угодно - хоть полностью убрать это свойство или метод. |
Ибо private-методы тоже кем-то используются, например, protected-методами, и такое вольное обращение с private неизбежно приводит ВАС к ожидаемым проблемам. Поэтому, вы можете извращаться в контексте вашего метода так, как вам захочется private он, protected или public, если интерфейс остаётся прежним и результат не изменяется, то на всё воля ваша. А если вы меняете интерфейс как здесь:
Цитата |
Вы хранили в свойстве protected $css массив URL. Потом захотели хранить для каждого URL еще и media. И сделали массив вида array( URL => media ) |
то вы дуб и чувак, который использовал это напрямую - такой же дуб. Я понимаю, что загнать всё в private - это вы унаследовали от C++, но я тоже могу сказать, переучивайтесь, PHP не C++.
_____________
Gear FrameworkGear Framework на Github
glock18
10.02.2014 - 14:30
Цитата (linker @ 10.02.2014 - 04:54) |
Ибо private-методы тоже кем-то используются, например, protected-методами, и такое вольное обращение с private неизбежно приводит ВАС к ожидаемым проблемам. Поэтому, вы можете извращаться в контексте вашего метода так, как вам захочется private он, protected или public, если интерфейс остаётся прежним и результат не изменяется, то на всё воля ваша. А если вы меняете интерфейс как здесь: |
Суть в том, что private метод будет использоваться в protected/public методах только класса-родителя. Если кто-то оверрайдит их, они не могут использовать private методы, а потому удаление/изменение приватных методов и свойств с предварительным рефакторингом класса-родителя совершенно безопасно
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.