Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Наследование ( C#, Лекция 2)

Содержание

Наследованиепозволяет создавать производные классы (классы наследники), взяв за основу все методы и элементы базового класса (класса родителя). Объекты производного класса свободно могут использовать всё, что создано и отлажено в базовом классе.
Лекция 2 Наследованиепозволяет создавать производные классы (классы наследники), взяв за основу все методы и НаследованиеПри этом, мы можем в производный класс, дописать необходимый код для усовершенствования ТерминологияКласс, от которого произошло наследование, называется базовым или родительским (англ. base class). Виды наследованияОт простого классаОт абстрактного классаОт интерфейса Наследование от классаПроизводный класс наследует от базового класса ВСЕ, что он имеет. Как организовать наследование?Описать базовый классclass ClassParent  {    private Как организовать наследование?Создать класс и унаследоваться от базовогоclass ClassChild : ClassParent  {  } protectedДоступ к члену с модификатором protected возможен внутри класса и из производных экземпляров класса. protectedУ родительского класса есть поле y типа double с модификатором доступа protected protectedДочерний класс имеет доступ к этому полю protectedНо извне это поле недоступно Доступ к базовомоу классуДоступ к членам базового класса во вложенном классе можно Переопределение функцийИзменим базовый класс, добавим метод Переопределение функцийПереопределим его в наследнике, используя ключевое слово new Переопределение функцийТеперь при вызове метода nothingMethod у объекта класса ClassChild будет вызываться Виртуальные методыКлючевое слово virtual используется для изменения объявлений методов, свойств, индексаторов и событий и Виртуальные методыМодификатор virtual нельзя использовать с модификаторами static, abstract, private или override.  В следующем примере показано виртуальное свойство.  Виртуальные методыВ родительском классе создаем метод с модификатором vitrual Виртуальные методыА в дочернем классе переопределяем его, используя модификатор override Почему обязательно override Конструктор и деструкторОсобые методы, которые есть у каждого класса (создаются по умолчанию, Конструктор, особые приметыЕсли не прописать, создается по умолчанию только для присвоения полям Конструктор как методНичего не возвращаетНазывается также как и класс Деструктор, особые приметыЕсли не прописать, создается по умолчанию для отчистки полей.Имеется только Деструктор как методПеред деструктором ставится значок ‘~’Имеет имя, такое же как классНе возвращает ничего Выбор конструктораПостроение объектов базового класса всегда выполняется до любого производного класса. Так, Выбор конструктораДополним базовый класс двумя конструкторами, один ничего не принимает, другой принимает 2 параметра Выбор конструктораТеперь укажем, что в наследнике, перед вызов его конструктора, вызывался конструктор родителя с двумя параметрами Шаблон class : {	 () : base()	{		//код	}} Модификатор sealed*При применении к классу, модификатор sealed запрещает другим классам наследовать от ПримерЕсли к нашему родителю применить этот модификатор, то его члены перестанут быть доступны наследнику abstractКлючевое слово abstract позволяет создавать классы и методы классов, которые являются неполными Абстрактный классСоздавать объекты от абстрактного класса нельзя. Назначение абстрактного класса заключается в предоставлении Пример ИнтерфейсыИнтерфейс является ссылочным типом, который состоит только из абстрактных членов. Когда класс Создание интерфейсаИнтерфейс объявляется через ключевое слова interface.Все методы интерфейса публичные! Создание интерфейсаИнтерфейс не может содержать полей! Создание интерфейсаНо может содержать свойства Наследование от интерфейсаЕсли мы просто унаследуемся от интерфейса, не определив ни одного метода, то получим ошибку Наследование от интерфейсаДаже определив несколько методов интерфейса, но не все, все равно будет ошибка Наследование от интерфейсаТолько определив все методы и свойства, ошибки не будет Модификатор доступаВсе методы, наследуемые от интерфейса, должны иметь публичный доступ Множественное наследованиеЕсли потомок может наследоваться только от одного обычного или абстрактного класса, Множественное наследование Множественное наследованиеЕсли в интерфейсах присутствуют методы с одинаковыми названиями, как понять метод Множественное наследование возможную неоднозначность в именах членов можно разрешить при помощи полного Как вызвать такой методОператор as используется для выполнения определенных преобразований типов между is и as. ПримерС помощью оператора is убеждаемся, что наш объект относится ОсобенностиОператор as подобен оператору приведения.  Однако если преобразование невозможно, то as возвращает null вместо вызова исключения.Если предоставленное выражение отлично Общий типСоздадим простой класс без содержимогоТеперь создадим объект от этого класса и ObjectВ нем оказалось 4 метода, хотя мы ничего не прописывали. Откуда они?В ObjectВсеобщий базовый тип. Обязательная составляющая любого типа в .NET. Функциональные характеристики типа System.Object приводятся в таблице. Object
Слайды презентации

Слайд 2 Наследование
позволяет создавать производные классы (классы наследники), взяв за

Наследованиепозволяет создавать производные классы (классы наследники), взяв за основу все методы

основу все методы и элементы базового класса (класса родителя).


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

Слайд 3 Наследование
При этом, мы можем в производный класс, дописать

НаследованиеПри этом, мы можем в производный класс, дописать необходимый код для

необходимый код для усовершенствования программы: добавить новые элементы, методы

и т.д..
Базовый класс останется нетронутым.

Слайд 4 Терминология
Класс, от которого произошло наследование, называется базовым или

ТерминологияКласс, от которого произошло наследование, называется базовым или родительским (англ. base

родительским (англ. base class).
Классы, которые произошли от базового,

называются потомками, наследниками или производными классами (англ. derived class).

Слайд 5 Виды наследования
От простого класса
От абстрактного класса
От интерфейса

Виды наследованияОт простого классаОт абстрактного классаОт интерфейса

Слайд 6 Наследование от класса
Производный класс наследует от базового класса

Наследование от классаПроизводный класс наследует от базового класса ВСЕ, что он

ВСЕ, что он имеет. Другое дело, что воспользоваться в

производном классе можно не всем наследством. Например, объект класса наследника в принципе НЕ может получить доступ к private данным — членам и функциям — членам класса-родителя.

Слайд 7 Как организовать наследование?
Описать базовый класс

class ClassParent
{

Как организовать наследование?Описать базовый классclass ClassParent {  private int x;

private int x;

protected double y;

public int getX { get { return x; } }
}

Слайд 8 Как организовать наследование?
Создать класс и унаследоваться от базового

class

Как организовать наследование?Создать класс и унаследоваться от базовогоclass ClassChild : ClassParent { }

ClassChild : ClassParent
{

}


Слайд 9 protected
Доступ к члену с модификатором protected возможен внутри

protectedДоступ к члену с модификатором protected возможен внутри класса и из производных экземпляров класса.

класса и из производных экземпляров класса.


Слайд 10 protected
У родительского класса есть поле y типа double

protectedУ родительского класса есть поле y типа double с модификатором доступа protected

с модификатором доступа protected


Слайд 11 protected
Дочерний класс имеет доступ к этому полю

protectedДочерний класс имеет доступ к этому полю

Слайд 12 protected
Но извне это поле недоступно

protectedНо извне это поле недоступно

Слайд 13 Доступ к базовомоу классу
Доступ к членам базового класса

Доступ к базовомоу классуДоступ к членам базового класса во вложенном классе

во вложенном классе можно получить при помощи ключевого слова

base.

Слайд 14 Переопределение функций
Изменим базовый класс, добавим метод

Переопределение функцийИзменим базовый класс, добавим метод

Слайд 15 Переопределение функций
Переопределим его в наследнике, используя ключевое слово

Переопределение функцийПереопределим его в наследнике, используя ключевое слово new

Слайд 16 Переопределение функций
Теперь при вызове метода nothingMethod у объекта

Переопределение функцийТеперь при вызове метода nothingMethod у объекта класса ClassChild будет

класса ClassChild будет вызываться метод не родительского класса, а

дочернего

Слайд 17 Виртуальные методы
Ключевое слово virtual используется для изменения объявлений методов, свойств,

Виртуальные методыКлючевое слово virtual используется для изменения объявлений методов, свойств, индексаторов и событий

индексаторов и событий и разрешения их переопределения в производном

классе.

Слайд 18 Виртуальные методы
Модификатор virtual нельзя использовать с модификаторами static, abstract, private или override.  В следующем примере

Виртуальные методыМодификатор virtual нельзя использовать с модификаторами static, abstract, private или override.  В следующем примере показано виртуальное свойство. 

показано виртуальное свойство. 


Слайд 19 Виртуальные методы
В родительском классе создаем метод с модификатором

Виртуальные методыВ родительском классе создаем метод с модификатором vitrual

vitrual


Слайд 20 Виртуальные методы
А в дочернем классе переопределяем его, используя

Виртуальные методыА в дочернем классе переопределяем его, используя модификатор override

модификатор override


Слайд 21 Почему обязательно override

Почему обязательно override

Слайд 22 Конструктор и деструктор
Особые методы, которые есть у каждого

Конструктор и деструкторОсобые методы, которые есть у каждого класса (создаются по

класса (создаются по умолчанию, даже если их не прописали).
Конструктор

вызывается при создании объекта от класса и служит инициализатором всех его полей
Деструктор вызывается при уничтожении объекта для отчистки из памяти всех его полей.

Слайд 23 Конструктор, особые приметы
Если не прописать, создается по умолчанию

Конструктор, особые приметыЕсли не прописать, создается по умолчанию только для присвоения

только для присвоения полям значений по умолчанию.
Если написали конструктор,

конструктор по умолчанию уже не будет создан.
Если есть несколько конструкторов, хотя бы один должен иметь доступ public.


Слайд 24 Конструктор как метод
Ничего не возвращает
Называется также как и

Конструктор как методНичего не возвращаетНазывается также как и класс

класс


Слайд 25 Деструктор, особые приметы
Если не прописать, создается по умолчанию

Деструктор, особые приметыЕсли не прописать, создается по умолчанию для отчистки полей.Имеется

для отчистки полей.
Имеется только один деструктор в классе (конструкторов

может быть много)

Слайд 26 Деструктор как метод
Перед деструктором ставится значок ‘~’
Имеет имя,

Деструктор как методПеред деструктором ставится значок ‘~’Имеет имя, такое же как классНе возвращает ничего

такое же как класс
Не возвращает ничего


Слайд 27 Выбор конструктора
Построение объектов базового класса всегда выполняется до

Выбор конструктораПостроение объектов базового класса всегда выполняется до любого производного класса.

любого производного класса. Так, конструктор базового класса выполняется перед

конструктором производного класса. Если базовый класс имеет несколько конструкторов, производный класс может выбрать вызываемый конструктор.

Слайд 28 Выбор конструктора
Дополним базовый класс двумя конструкторами, один ничего

Выбор конструктораДополним базовый класс двумя конструкторами, один ничего не принимает, другой принимает 2 параметра

не принимает, другой принимает 2 параметра


Слайд 29 Выбор конструктора
Теперь укажем, что в наследнике, перед вызов

Выбор конструктораТеперь укажем, что в наследнике, перед вызов его конструктора, вызывался конструктор родителя с двумя параметрами

его конструктора, вызывался конструктор родителя с двумя параметрами


Слайд 30 Шаблон
class :
{

Шаблон class : {	 () : base()	{		//код	}}

() : base()
{
//код
}

}


Слайд 31 Модификатор sealed*
При применении к классу, модификатор sealed запрещает

Модификатор sealed*При применении к классу, модификатор sealed запрещает другим классам наследовать

другим классам наследовать от этого класса.




*Если вы его применяете,

то у вас большие проблемы с архитектурой проекта!

Слайд 32 Пример
Если к нашему родителю применить этот модификатор, то

ПримерЕсли к нашему родителю применить этот модификатор, то его члены перестанут быть доступны наследнику

его члены перестанут быть доступны наследнику


Слайд 33 abstract
Ключевое слово abstract позволяет создавать классы и методы

abstractКлючевое слово abstract позволяет создавать классы и методы классов, которые являются

классов, которые являются неполными и должны быть реализованы в

производном классе.

Слайд 34 Абстрактный класс
Создавать объекты от абстрактного класса нельзя. Назначение абстрактного

Абстрактный классСоздавать объекты от абстрактного класса нельзя. Назначение абстрактного класса заключается в

класса заключается в предоставлении общего определения для базового класса,

которое могут совместно использовать несколько производных классов.

Слайд 35 Пример

Пример

Слайд 36 Интерфейсы
Интерфейс является ссылочным типом, который состоит только из

ИнтерфейсыИнтерфейс является ссылочным типом, который состоит только из абстрактных членов. Когда

абстрактных членов.
Когда класс реализует интерфейс, он должен предоставить

реализацию для всех членов интерфейса.
В классе может быть реализовано несколько интерфейсов

Слайд 37 Создание интерфейса
Интерфейс объявляется через ключевое слова interface.
Все методы

Создание интерфейсаИнтерфейс объявляется через ключевое слова interface.Все методы интерфейса публичные!

интерфейса публичные!


Слайд 38 Создание интерфейса
Интерфейс не может содержать полей!

Создание интерфейсаИнтерфейс не может содержать полей!

Слайд 39 Создание интерфейса
Но может содержать свойства

Создание интерфейсаНо может содержать свойства

Слайд 40 Наследование от интерфейса
Если мы просто унаследуемся от интерфейса,

Наследование от интерфейсаЕсли мы просто унаследуемся от интерфейса, не определив ни одного метода, то получим ошибку

не определив ни одного метода, то получим ошибку


Слайд 41 Наследование от интерфейса
Даже определив несколько методов интерфейса, но

Наследование от интерфейсаДаже определив несколько методов интерфейса, но не все, все равно будет ошибка

не все, все равно будет ошибка


Слайд 42 Наследование от интерфейса
Только определив все методы и свойства,

Наследование от интерфейсаТолько определив все методы и свойства, ошибки не будет

ошибки не будет


Слайд 43 Модификатор доступа
Все методы, наследуемые от интерфейса, должны иметь

Модификатор доступаВсе методы, наследуемые от интерфейса, должны иметь публичный доступ

публичный доступ


Слайд 44 Множественное наследование
Если потомок может наследоваться только от одного

Множественное наследованиеЕсли потомок может наследоваться только от одного обычного или абстрактного

обычного или абстрактного класса, то в случае с интерфейсами,

он может наследоваться сразу же от нескольких интерфейсов.

Но тут может возникнуть проблемка…

Слайд 45 Множественное наследование

Множественное наследование

Слайд 46 Множественное наследование
Если в интерфейсах присутствуют методы с одинаковыми

Множественное наследованиеЕсли в интерфейсах присутствуют методы с одинаковыми названиями, как понять

названиями, как понять метод какого из интерфейсов был реализован

в классе-наследнике?

Слайд 47 Множественное наследование
возможную неоднозначность в именах членов можно

Множественное наследование возможную неоднозначность в именах членов можно разрешить при помощи

разрешить при помощи полного квалификатора имени свойства или метода.


Слайд 48 Как вызвать такой метод
Оператор as используется для выполнения

Как вызвать такой методОператор as используется для выполнения определенных преобразований типов

определенных преобразований типов между совместимыми ссылочными типами или тип,

допускающий значение NULL.

Оператор is проверяет совместимость объекта с заданным типом.

Слайд 49 is и as. Пример
С помощью оператора is убеждаемся,

is и as. ПримерС помощью оператора is убеждаемся, что наш объект

что наш объект относится к нужному интерфейсу, а потом

приводим его к этому интерфейсу для вызова нужного метода

Слайд 50 Особенности
Оператор as подобен оператору приведения.  Однако если преобразование невозможно, то as возвращает null вместо вызова

ОсобенностиОператор as подобен оператору приведения.  Однако если преобразование невозможно, то as возвращает null вместо вызова исключения.Если предоставленное выражение

исключения.
Если предоставленное выражение отлично от NULL и предоставленный объект

может быть приведен к предоставленному типу не вызывая исключение, выражение is принимает значение true.

Слайд 51 Общий тип
Создадим простой класс без содержимого
Теперь создадим объект

Общий типСоздадим простой класс без содержимогоТеперь создадим объект от этого класса

от этого класса и посмотрим что в нем есть


Слайд 52 Object
В нем оказалось 4 метода, хотя мы ничего

ObjectВ нем оказалось 4 метода, хотя мы ничего не прописывали. Откуда

не прописывали. Откуда они?

В унифицированной системе типов C# все

типы, предопределенные и пользовательские, наследуют непосредственно или косвенно от Object.

Слайд 53 Object
Всеобщий базовый тип. Обязательная составляющая любого типа в

ObjectВсеобщий базовый тип. Обязательная составляющая любого типа в .NET. Функциональные характеристики типа System.Object приводятся в таблице.

.NET. Функциональные характеристики типа System.Object приводятся в таблице.


  • Имя файла: nasledovanie-c-lektsiya-2.pptx
  • Количество просмотров: 100
  • Количество скачиваний: 0