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

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Приклад класу з перевантаженими методами і операціями



class Demoarray

{

int[] Myarray;//закритий масив

}

public static Demoarray operator -(Demoarray x) //перевантаження операції унарный мінус

{

Demoarray temp = new Demoarray(x.Lengtharray);

for (int i = 0; i < x.Lengtharray; ++i)

temp[i] = -x[i];

return temp;

}

public static Demoarray operator ++(Demoarray x) //перевантаження операції инкремента

{

Demoarray temp = new Demoarray(x.Lengtharray);

for (int i = 0; i < x.Lengtharray; ++i)

temp[i] = x[i]+1;

return temp;

}

public static bool operator true(Demoarray a) //перевантаження константи true

{

foreach (int i in a.Myarray)

{

if (i<0)

{

return false;

}

}

return true;

}

public void Print(string name) //метод - виводить поле-масив на екран

{

Console.Writeline(name + ": ");

for (int i = 0; i < Myarray.Length; i++)

Console.Write(Myarray[i] + " ");

Console.Writeline();

}

}


 

Успадкування класів. Виклик конструкторів при успадкуванні

Успадкування, разом з инкапсуляцией і поліморфізмом, є однією з трьох основних характеристик (або базових понять ) об'єктно-орієнтованого програмування. Успадкування дозволяє створювати нові класи, які повторно використовують, розширюють і змінюють поведінку, визначене в інших класах. Клас, члени якого успадковуються, називається базовим класом , а клас, який успадковує ці члени, називається похідним класом . Похідний клас може мати тільки один безпосередній базовий клас. Однак спадкування є транзитивним. Якщо ClassC є похідним від ClassB, і ClassB є похідним від ClassA, ClassC успадковує члени, оголошені в ClassB і ClassA. Концептуально, похідний клас є спеціалізацією базового класу. Наприклад, при наявності базового класу Animal , можлива наявність одного похідного класу, який називається Mammal , і ще одного похідного класу, який називається Reptile . Mammal є Animal таReptile є Animal , але кожен похідний клас представляє різні спеціалізації базового класу.

При визначенні класу для наслідування від іншого класу, похідний клас явно отримує всі члени базового класу, за винятком його конструкторів і деструкторів. Похідний клас може таким чином повторно використовувати код в базовому класі без необхідності в його повторної реалізації. У похідному класі можна додати більше членів. Таким чином, похідний клас розширює функціональність базового класу.

конструктор базового класу конструює базову частину об'єкта, а конструктор похідного класу - похідну частину цього об'єкта. І в цьому є своя логіка, оскільки базового класу невідомі і недоступні будь-які елементи похідного класу, а значить, їх конструювання має відбуватися окремо. Якщо конструктор визначений тільки в похідному класі, то все відбувається дуже просто: конструюється об'єкт похідного класу, а базова частина об'єкта автоматично конструюється його конструктором, використовуваним за замовчуванням. Коли конструктори визначаються як в базовому, так і в похідному класі, процес побудови об'єкта дещо ускладнюється, оскільки повинні виконуватися конструктори обох класів. В даному випадку доводиться звертатися до ключовим словом base , яке знаходить двояке застосування: по-перше, для виклику конструктора базового класу; і по-друге, для доступу до члена базового класу, який переховується за членом похідного класу. За допомогою форми розширеного оголошення конструктора похідного класу і ключового слова base в похідному класі може бути викликаний конструктор, визначений у його базовому класі.

За допомогою ключового слова base можна викликати конструктор будь-якої форми, яка визначається в базовому класі, причому виконуватися буде лише той конструктор, параметри якого відповідають переданим аргументам. А тепер розглянемо коротко основні принципи дії ключового слова base. Коли в похідному класі вказується ключове слово base, викликається конструктор з його безпосереднього базового класу. Отже, ключове слово base завжди звертається до базового класу, що стоїть в ієрархії безпосередньо над зухвалим класом. Це справедливо навіть для багаторівневої ієрархії класів. Аргументи передаються базового конструктору в якості аргументів методу base (). Якщо ж ключове слово відсутнє, то автоматично викликається конструктор, використовуваний в базовому класі за замовчуванням.


 



Просмотров 724

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!