Содержание
- 2. Наследование позволяет создавать производные классы (классы наследники), взяв за основу все методы и элементы базового класса
- 3. Наследование При этом, мы можем в производный класс, дописать необходимый код для усовершенствования программы: добавить новые
- 4. Терминология Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли
- 5. Виды наследования От простого класса От абстрактного класса От интерфейса
- 6. Наследование от класса Производный класс наследует от базового класса ВСЕ, что он имеет. Другое дело, что
- 7. Как организовать наследование? Описать базовый класс class ClassParent { private int x; protected double y; public
- 8. Как организовать наследование? Создать класс и унаследоваться от базового class ClassChild : ClassParent { }
- 9. protected Доступ к члену с модификатором protected возможен внутри класса и из производных экземпляров класса.
- 10. protected У родительского класса есть поле y типа double с модификатором доступа protected
- 11. protected Дочерний класс имеет доступ к этому полю
- 12. protected Но извне это поле недоступно
- 13. Доступ к базовомоу классу Доступ к членам базового класса во вложенном классе можно получить при помощи
- 14. Переопределение функций Изменим базовый класс, добавим метод
- 15. Переопределение функций Переопределим его в наследнике, используя ключевое слово new
- 16. Переопределение функций Теперь при вызове метода nothingMethod у объекта класса ClassChild будет вызываться метод не родительского
- 17. Виртуальные методы Ключевое слово virtual используется для изменения объявлений методов, свойств, индексаторов и событий и разрешения
- 18. Виртуальные методы Модификатор virtual нельзя использовать с модификаторами static, abstract, private или override. В следующем примере
- 19. Виртуальные методы В родительском классе создаем метод с модификатором vitrual
- 20. Виртуальные методы А в дочернем классе переопределяем его, используя модификатор override
- 21. Почему обязательно override
- 22. Конструктор и деструктор Особые методы, которые есть у каждого класса (создаются по умолчанию, даже если их
- 23. Конструктор, особые приметы Если не прописать, создается по умолчанию только для присвоения полям значений по умолчанию.
- 24. Конструктор как метод Ничего не возвращает Называется также как и класс
- 25. Деструктор, особые приметы Если не прописать, создается по умолчанию для отчистки полей. Имеется только один деструктор
- 26. Деструктор как метод Перед деструктором ставится значок ‘~’ Имеет имя, такое же как класс Не возвращает
- 27. Выбор конструктора Построение объектов базового класса всегда выполняется до любого производного класса. Так, конструктор базового класса
- 28. Выбор конструктора Дополним базовый класс двумя конструкторами, один ничего не принимает, другой принимает 2 параметра
- 29. Выбор конструктора Теперь укажем, что в наследнике, перед вызов его конструктора, вызывался конструктор родителя с двумя
- 30. Шаблон class : { ( ) : base( ) { //код } }
- 31. Модификатор sealed* При применении к классу, модификатор sealed запрещает другим классам наследовать от этого класса. *Если
- 32. Пример Если к нашему родителю применить этот модификатор, то его члены перестанут быть доступны наследнику
- 33. abstract Ключевое слово abstract позволяет создавать классы и методы классов, которые являются неполными и должны быть
- 34. Абстрактный класс Создавать объекты от абстрактного класса нельзя. Назначение абстрактного класса заключается в предоставлении общего определения
- 35. Пример
- 36. Интерфейсы Интерфейс является ссылочным типом, который состоит только из абстрактных членов. Когда класс реализует интерфейс, он
- 37. Создание интерфейса Интерфейс объявляется через ключевое слова interface. Все методы интерфейса публичные!
- 38. Создание интерфейса Интерфейс не может содержать полей!
- 39. Создание интерфейса Но может содержать свойства
- 40. Наследование от интерфейса Если мы просто унаследуемся от интерфейса, не определив ни одного метода, то получим
- 41. Наследование от интерфейса Даже определив несколько методов интерфейса, но не все, все равно будет ошибка
- 42. Наследование от интерфейса Только определив все методы и свойства, ошибки не будет
- 43. Модификатор доступа Все методы, наследуемые от интерфейса, должны иметь публичный доступ
- 44. Множественное наследование Если потомок может наследоваться только от одного обычного или абстрактного класса, то в случае
- 45. Множественное наследование
- 46. Множественное наследование Если в интерфейсах присутствуют методы с одинаковыми названиями, как понять метод какого из интерфейсов
- 47. Множественное наследование возможную неоднозначность в именах членов можно разрешить при помощи полного квалификатора имени свойства или
- 48. Как вызвать такой метод Оператор as используется для выполнения определенных преобразований типов между совместимыми ссылочными типами
- 49. is и as. Пример С помощью оператора is убеждаемся, что наш объект относится к нужному интерфейсу,
- 50. Особенности Оператор as подобен оператору приведения. Однако если преобразование невозможно, то as возвращает null вместо вызова
- 51. Общий тип Создадим простой класс без содержимого Теперь создадим объект от этого класса и посмотрим что
- 52. Object В нем оказалось 4 метода, хотя мы ничего не прописывали. Откуда они? В унифицированной системе
- 53. Object Всеобщий базовый тип. Обязательная составляющая любого типа в .NET. Функциональные характеристики типа System.Object приводятся в
- 55. Скачать презентацию