Синтаксис на наследяване на реклами

обществени клас получени: mybase // наследяване

Виртуални методи

Механизъм виртуални функции - една от приложения на основните концепции на обектно-ориентиран - полиморфизъм. Този механизъм включва използването на идеята за "един интерфейс, много методи за изпълнение." Тази идея е, че базовия клас се предвижда, получени класове всички елементи, които тези класове могат да бъдат използвани директно, а също така съдържа набор от функции, които производните класове трябва да прилагат, като ги отменят (създаването на своя собствена функция код в извлечен клас, като се крият или замяна основното внедряване на кода).

Виртуална метод - функция обявен с ключовата slovomvirtualv базовия клас и предефинирани в една или повече, получен от този клас. Задължително изискване: заглавна функция трябва да бъде точно същата, както в базовия клас. След това, когато се създаде обект или база, или някоя от производните класове компилаторът определя коя от функциите, които искате да се обадите, въз основа на вида на обекта.

Условия за ползване на виртуални методи

1. Ако virtualnaya функция в един клас, той ще бъде един виртуален без значение нивото на йерархията.

2. Ако в извлечен клас виртуална функция не е засегнато, тя използва своята версия на базовия клас.

функция 3.Virtualnye трябва да има същия интерфейс през йерархията на класа.

Полиморфизъм - способността на различни класове от обекти, свързани наследяване по различни начини, за да отговори на призива на една и съща функция.

Крие методи база класа

Когато наследи член на базовия клас се наследява, а също и нейното прилагане. Ако наследствено yavlyaetsyavirtualnym член. е възможно да се замени неговото изпълнение с помощта на ключ slovooverride. Независимо от това дали е член на наследствено виртуална, mozhnoskryt прилагането му, ако е необходимо. Например, това е полезно, когато наследи общ термин не работи по желание. Прикриването се постига с помощта на следния код:

обществени клас получен: mybase

Въпреки, че този код да работи правилно, тя ще генерира предупреждение, че членът на базовия клас се крие в него. Това дава възможност да се определи ситуацията, когато случайно се скри член, който всъщност искате да използвате. Ако членът наистина искате да се скрие, а след това може да се каже ясно, като се използва ключ slovomnew:

Този код ще работи точно същото, само без да се показва предупреждение.

Разликата между латентна и замяна на основата членовете на групата разгледаме един пример:

обществени клас mybase

обществени клас получен: mybase

В този случай е заменено е () метод замества изпълнението на базовия клас, така че нова версия на следващия код, за да се използва, въпреки факта, че лечението се извършва чрез тип метод базовия клас (с помощта на полиморфизъм):

получен г = нов получен ();

б = г; // отбележи, прехвърлянето на класа случаи

Една алтернатива е да се скрие метода на базовия клас със следния код:

обществени клас mybase

публична виртуална нищожен е () Console.WriteLine ( "Basic изпълнение")>

обществени клас получени. mybase

база метод клас в този случай не е задължително да бъде виртуална, обаче, това няма да се промени нищо, а кодът е показано тук е различна от предишната само в един ред. Резултатът от изпълнението на този код, както и в един виртуален метод, а в противен случай ще бъде, както следва: Basic изпълнение

Въпреки факта, че основната изпълнението е скрито за него, както и преди, има достъп чрез базовия клас.