Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СЕССИЯ ОТВЕТЫ / iOS сессия ответы.docx
Скачиваний:
21
Добавлен:
25.12.2020
Размер:
14.45 Mб
Скачать

Переопределение свойств

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

ли альтернативную версию реализации метода в подклассе.

Доступ к наследуемым характеристикам

Доступ к наследуемым элементам родительского класса в произ­водном классе реализуется так же, как к собственным элементам данного производного класса, то есть с использованием ключевого слова self. В качестве примера в класс Dog добавим метод, выводящий на консоль кличку собаки. Кличка хранится в свойстве name, которое наследуется от класса Quadruped.

51.Переопределение инициализаторов. Переопределение наследуемых свойств

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

Вы реализуете эту инициализацию, определяя инициализаторы, которые схожи со специальными методами, которые вызываются для создания экземпляра определенного типа. В отличии от инициализаторов в Objective-C, инициализаторы в Swift не возвращают значения. Основная роль инициализаторов - убедиться в том, что новый экземпляр типа правильно инициализирован до того, как будет использован в первый раз.

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

Подкласс может предоставить свою собственную настраиваемую реализацию метода экземпляра, метода типа, свойства экземпляра, свойства типа или индекса, которые в противном случае он унаследовал бы от суперкласса. Это называется переопределением.

Чтобы переопределить характеристику, которая в противном случае была бы унаследована, вы префикс своего определения переопределения с помощью ключевого слова override. Это проясняет, что вы намерены предоставить переопределение и по ошибке не предоставили соответствующее определение. Случайное переопределение может вызвать неожиданное поведение, и любые переопределения без ключевого слова переопределения диагностируются как ошибка при компиляции кода.

Ключевое слово override также побуждает компилятор Swift проверить, что у суперкласса вашего замещающего класса (или одного из его родителей) есть объявление, соответствующее тому, которое вы указали для замены. Эта проверка гарантирует, что ваше определение переопределения верное.

Доступ к методам, свойствам и индексам суперкласса

Когда вы предоставляете переопределение метода, свойства или нижнего индекса для подкласса, иногда полезно использовать существующую реализацию суперкласса как часть вашего переопределения. Например, вы можете уточнить поведение существующей реализации или сохранить измененное значение в существующей унаследованной переменной.

Когда это уместно, вы получаете доступ к версии суперкласса метода, свойства или индекса с помощью префикса super:

Переопределенный метод с именем someMethod () может вызывать версию суперкласса someMethod (), вызывая super.someMethod () в реализации метода переопределения.

Переопределенное свойство с именем someProperty может получить доступ к версии суперкласса someProperty как super.someProperty в рамках реализации переопределения метода получения или установки.

Переопределенный индекс для someIndex может получить доступ к версии суперкласса того же индекса, что и super [someIndex], из реализации замещающего индекса.

Соседние файлы в папке СЕССИЯ ОТВЕТЫ