Показать сообщение отдельно
Старый 09.11.2011, 23:18
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 20  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
Сообщение от GBee Посмотреть сообщение
Отликбезьте, пожалуйста, в примерах? Или что понимается под словом "реализация" И чем хороши геттеры сеттеры для "полиморфа" просветите?
Вот сейчас задумался, насколько уместно словосочетание "сокрытие реализации" здесь.
Вот например возьмем класс Socket. Нам совсем не нужно знать о том, как он поднимает эти соединения и всё в этом духе. Нам не нужно знать, что за поле _buf у него есть (если есть), потому что нам дают вполне полный функционал для работы, а залезя во внутренности мы что нибудь сломаем что нибудь руками. Вот сокрытие того, как класс делает что-то и есть инкапсуляция. Предоставление пользователю только того, чего он не сможет сломать. Соответственно, посему геттер без сеттера это проблеск инкапсуляции - мы запрещаем ему менять какую-то переменную. Но разные проверки внутри сеттера - это штатные ситуации, которые обрабатываются. Это просто код класса.

Полиморфизм, если на пальцах... Ну вот есть класс A, от которого наследуется класс B.
Код AS3:
class A{
public function method():void{
trace(1);
}
}
 
class B{
override public function method():void{
trace(2);
}
}
теперь получив где нибудь ссылку на A и вызвав method мы можем увидеть как 1, так и 2. Потому что в ссылку с типом A может попасть класс В. И вот эта штука и называется полиморфизмом.

Обычное поле класса никак не переопределить, и полиморфизма в нём не добиться. А вот сеттеры-геттеры можно.