Производный класс может обращаться к состоянию базового класса и манипулировать им. - PullRequest
0 голосов
/ 03 января 2019

В книге «CLR через C #» автор сказал, что класс должен защищать свое собственное состояние и не допускать его повреждения.Когда класс незапечатан, производный класс может обращаться к состоянию базового класса и манипулировать им, если какие-либо поля данных или методы, которые внутренне манипулируют полями, доступны и не являются закрытыми.

Я хочу знать пример этой ситуации

1 Ответ

0 голосов
/ 04 января 2019

В буквальном смысле, что пытается сказать автор, это скрыть все поля как частные и разрешить манипулирование их значениями только через методы получения и установки открытых / защищенных свойств и / или методы.Эти методы, сеттеры и геттеры должны иметь логику / проверки для предотвращения нарушения целостности данных.

Скажем, у вас есть объект шахматной фигуры.У него есть поля текущей позиции char и int (скажем, H8 или A2).Во-первых, некоторые позиции не разрешены (скажем, Z90), или некоторые позиции могут быть недоступны при следующем движении из-за типа фигуры (слон не может двигаться вперед).Таким образом, если поля позиции не являются частными, класс предка может изменить их напрямую и нарушить логику / целостность.Но если вы скрываете поля позиции как закрытые и разрешаете перемещать только через такие методы, как Move(MoveType move), то такое повреждение данных невозможно.

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