Difference between revisions of "Step 2 (S-10690)"
(Create page for step id=10690) |
|||
Line 1: | Line 1: | ||
Step on Stepik: https://stepik.org/lesson/557/step/2 | Step on Stepik: https://stepik.org/lesson/557/step/2 | ||
− | + | [[File:Step_2_(S-10690)_1.png|border|800px]] | |
[00:00 - 00:15] в последнее время эти данные лекции мы поговорим о некоторых особенностях наследовании 1 такая особенность это возможность указать модификатор доступа при наследовании например если есть некоторый класс а то от него можно унаследоваться указать модификаторы доступа | [00:00 - 00:15] в последнее время эти данные лекции мы поговорим о некоторых особенностях наследовании 1 такая особенность это возможность указать модификатор доступа при наследовании например если есть некоторый класс а то от него можно унаследоваться указать модификаторы доступа |
Latest revision as of 12:45, 7 August 2017
Step on Stepik: https://stepik.org/lesson/557/step/2
[00:00 - 00:15] в последнее время эти данные лекции мы поговорим о некоторых особенностях наследовании 1 такая особенность это возможность указать модификатор доступа при наследовании например если есть некоторый класс а то от него можно унаследоваться указать модификаторы доступа
[00:15 - 00:31] можно указать модификаторы доступа private и можно даже указать модификаторы доступа protected если не указать модификатор доступа явно там будет назначен по умолчанию в зависимости от того с каким ключевым словом определен данные класс
[00:31 - 00:49] это будет протекать аналогично тому как это работает с модификаторами доступа для полей и методов классов то есть если мы определим класс ключевым словом экстракт я не буду используется паблик на следует так же как по умолчанию внутри класс определенных тракте пользоваться popup
[00:49 - 01:05] а для классов объявленных с ключевым словом класс будет использоваться как работают модификаторы доступа в случае с паблик наследованием совсем наследовании по которой мы говорили до этого
[01:05 - 01:24] я везде использовал ключевое слово тракт но не указывал модификатор доступа поэтому все отношение было в случае с паблик наследованием любой код который работает с производными классом данном случае мы 1 знает о том что это классно унаследован от базовых класса а
[01:24 - 01:43] и значит может вызывать все методы которые унаследованы производным классом от базового а также приводить указателя и ссылки на производный класс указать ремастерингом на базовой post то есть информация о том что да день является производным доступно все случаи
[01:43 - 01:58] private наследования информация о том что в данном случае как бы 2 унаследовано класса а эта информация доступна только внутри класса б 2 то есть только внутри класса б 2 можно
[01:58 - 02:14] обращаться к некоторому наследуем от класс а и только внутри вас вы да можно приводить указателей ссылки на производные классно указатель мы ссылкам на и аналогично с протыкает наследования
[02:14 - 02:28] если класс б 3 в наследовании класс а с модификатором доступ к protected то информация о том чтобы 3 является производным от а классом она будет доступна внутри класса и передаваться по наследству по наследству то есть
[02:28 - 02:44] во всех производных от петриковской будет возможность обратиться к методам унаследованным от базовых классов а также будет возможность привезти указателей ссылки на производной классе куда термопленку на под глаза
[02:44 - 03:02] важно отметить что все на сегодня не при котором говорит это было не на паблик наследования и именно паблик наследование задает отношение наследования в терминах объектно ориентированном программировании то есть в терминах программирования наследование соответствует public наследуемся + +
[03:02 - 03:18] private и protected наследовании издают похожий на наследование конструкции но при этом в терминах а о б это не является корректным нас так как не любой кот может работать с производными классами через указатели ссылку на базу и класс
[03:18 - 03:34] если в каком то месте программ вам вдруг потребовалось использовать правила наследования то скорее всего вы хотите чего то странного и скорее всего в данном месте можно заменить праве наследования агрегирование
[03:34 - 03:52] хотя случаются ситуации когда мы хотим не только агрегировать некоторый класс но и подменить его виртуальные методы в этом случае действительно можно использовать правила 3 protected наследования и таким образом мы с 1 стороны не добавим преобразование от
[03:52 - 04:08] производного класса базу для всего окружающего кода но с другой стороны мы сможем агрегирует 1 некоторого класса и за 1 подменить виртуальный метод эту вас есть более менее это единственный случай когда стоит использовать правила или protected нашли в остальном
[04:08 - 04:15] private наследования не нужно всегда используете