Step 6 (S-10664)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/552/step/6

Step 6 (S-10664) 1.png

[00:00 - 00:14] как я уже говорил производные классы наследование поля своих базовых классов однако если внутри базовых классов были объявлены с модификатором доступа правят то внутри производного класса мы не можем обратиться к этим поля ты даже не смотря на то что


[00:14 - 00:29] эти поля физически хранятся в объектах производного класса мы не имеем к ней доступа это касается не только полезно но нет то есть в принципе класс наследник не имеют доступа к правила членом родительского класса если внутри родительского класса нам потребуются


[00:29 - 00:47] определить поля или методы таким образом чтобы наши наследники имели к ним доступ а никакой внешний код не имел то для этого можно использовать модификатор доступа protect так например в нашем примере с классами промышленности вы могли бы определить


Step 6 (S-10664) 2.png

Step 6 (S-10664) 3.png

Step 6 (S-10664) 4.png

[00:47 - 01:04] поля класса прошлом как protected в этом случае никакой внешний код не смогут менять однако мы смогли бы обращаться к этим полям внутри класса сегодня ты в том что то менять стоит отметить что использование модификатора protected


Step 6 (S-10664) 5.png

Step 6 (S-10664) 6.png

[01:04 - 01:23] с полями то есть определения политико protected потенциально нарушает инкапсуляцию аналогично тому как это было с модификатором паблик если мы определяем какие то поля как public то внешний код может попытаться изменить эти поля и измените таким образом что нарушится ли варианты класса


Step 6 (S-10664) 7.png

[01:23 - 01:43] аналогично если мы определили поля как protected то внешний код уже не может это сделать но это можно сделать любой наш наследник то есть наш наследник может попытаться изменить поля класса таким образом что будет нарушен вариант класса поэтому не стоит использовать protected для


[01:43 - 02:00] полей то есть этот модификатор доступа разумно использовать для определения метод при помощи определить методу как protected можно выделить некоторые специальные интерфейсы для наследника то есть ты так классно быть 2 интерфейса у меня будет в интерфейсе публичной тот который


[02:00 - 02:18] доступен любому внешнему коду а также будет еще а protect это интерфейс тот интерфейс который выдается только в наследником при этом как я уже сказал делать protected не стоит потому что можно будет не уследить и какой то


[02:18 - 02:27] наследовавший нарушит января ты класса и таким образом придет программу недееспособным состоянии