nasledovanie

PPTX 25 sahifa 123,6 KB Bepul yuklash

Sahifa ko'rinishi (5 sahifa)

Pastga aylantiring 👇
1 / 25
теория вероятностей и математическая статистика наследование наследование (inheritance) является одним из ключевых моментов ооп. благодаря наследованию один класс может унаследовать функциональность другого класса. пусть у нас есть следующий класс person, который описывает отдельного человека: 1 наследование class person { private string _name; public string name { get { return _name; } set { _name = value; } } public void display() { console.writeline(name); } } 2 наследование но вдруг нам потребовался класс, описывающий сотрудника предприятия - класс employee. поскольку этот класс будет реализовывать тот же функционал, что и класс person, так как сотрудник - это также и человек, то было бы рационально сделать класс employee производным (или наследником, или подклассом) от класса person, который, в свою очередь, называется базовым классом или родителем (или суперклассом): class employee : person { } 3 наследование после двоеточия мы указываем базовый класс для данного класса. для класса employee базовым является person, и поэтому класс …
2 / 25
нако здесь есть ряд ограничений: 6 наследование не поддерживается множественное наследование, класс может наследоваться только от одного класса. при создании производного класса надо учитывать тип доступа к базовому классу - тип доступа к производному классу должен быть таким же, как и у базового класса, или более строгим. то есть, если базовый класс у нас имеет тип доступа internal, то производный класс может иметь тип доступа internal или private, но не public. однако следует также учитывать, что если базовый и производный класс находятся в разных сборках (проектах), то в этом случае производый класс может наследовать только от класса, который имеет модификатор public. 7 наследование если класс объявлен с модификатором sealed, то от этого класса нельзя наследовать и создавать производные классы. например, следующий класс не допускает создание наследников: sealed class admin { } нельзя унаследовать класс от статического класса. 8 доступ к членам базового класса из класса-наследника вернемся к нашим классам person …
3 / 25
и protected internal. 11 ключевое слово base теперь добавим в наши классы конструкторы: class person { public string name { get; set; } public person(string name) { name = name; } public void display() { console.writeline(name); } } 12 ключевое слово base class employee : person { public string company { get; set; } public employee(string name, string company) : base(name) { company = company; } } класс person имеет конструктор, который устанавливает свойство name. поскольку класс employee наследует и устанавливает то же свойство name, то логично было бы не писать по сто раз код установки, а как-то вызвать соответствующий код класса person. к тому же свойств, которые надо установить в конструкторе базового класса, и параметров может быть гораздо больше. 13 ключевое слово base с помощью ключевого слова base мы можем обратиться к базовому классу. в нашем случае в конструкторе класса employee нам надо установить имя и компанию. но имя …
4 / 25
мы все равно бы получили ошибку: public employee(string name, string company) { name = name; company = company; } 16 конструкторы в производных классах то есть в классе employee через ключевое слово base надо явным образом вызвать конструктор класса person: public employee(string name, string company) : base(name) { company = company; } либо в качестве альтернативы мы могли бы определить в базовом классе конструктор без параметров: 17 конструкторы в производных классах class person { // остальной код класса // конструктор по умолчанию public person() { firstname = "tom"; console.writeline("вызов конструктора без параметров"); } } 18 конструкторы в производных классах class person { // остальной код класса // конструктор по умолчанию public person() { firstname = "tom"; console.writeline("вызов конструктора без параметров"); } } тогда в любом конструкторе производного класса, где нет обращения конструктору базового класса, все равно неявно вызывался бы этот конструктор по умолчанию. например, следующий конструктор 19 конструкторы в производных …
5 / 25
m = new employee("tom", 22, "microsoft"); мы получим следующий консольный вывод: person(string name) person(string name, int age) employee(string name, int age, string company) в итоге мы получаем следующую цепь выполнений. 23 порядок вызова конструкторов 1. вначале вызывается конструктор employee(string name, int age, string company). он делегирует выполнение конструктору person(string name, int age) 2. вызывается конструктор person(string name, int age), который сам пока не выполняется и передает выполнение конструктору person(string name) 3. вызывается конструктор person(string name), который передает выполнение конструктору класса system.object, так как это базовый по умолчанию класс для person. 4. выполняется конструктор system.object. object(), затем выполнение возвращается конструктору person(string name) 24 порядок вызова конструкторов 5. выполняется тело конструктора person(string name), затем выполнение возвращается конструктору person(string name, int age) 6. выполняется тело конструктора person(string name, int age), затем выполнение возвращается конструктору employee(string name, int age, string company) 7. выполняется тело конструктора employee(string name, int age, string company). в итоге создается …

Ko'proq o'qimoqchimisiz?

Barcha 25 sahifani Telegram orqali bepul yuklab oling.

To'liq faylni yuklab olish

"nasledovanie" haqida

теория вероятностей и математическая статистика наследование наследование (inheritance) является одним из ключевых моментов ооп. благодаря наследованию один класс может унаследовать функциональность другого класса. пусть у нас есть следующий класс person, который описывает отдельного человека: 1 наследование class person { private string _name; public string name { get { return _name; } set { _name = value; } } public void display() { console.writeline(name); } } 2 наследование но вдруг нам потребовался класс, описывающий сотрудника предприятия - класс employee. поскольку этот класс будет реализовывать тот же функционал, что и класс person, так как сотрудник - это также и человек, то было бы рационально сделать класс employee производным (или наследником, или подклассом) от класса person, ...

Bu fayl PPTX formatida 25 sahifadan iborat (123,6 KB). "nasledovanie"ni yuklab olish uchun chap tomondagi Telegram tugmasini bosing.

Teglar: nasledovanie PPTX 25 sahifa Bepul yuklash Telegram