русс | укр

C# - Головна
Контакти
Задайте питання...
Перегляд всіх питань


Простір імен
  ► System (5)
  ► Microsoft (1)


Для учнів (початківців)
  ► Відео уроки (4)
  ► Навчання (177)
  ► Приклади програм (19)
  ► Секрети Сі Шарп (4)

Для професіоналів
  ► Навчання (6)
  ► Приклади програм (1)










Перевизначення методів базового класу C#

Похідний клас успадковує всі члени базового класу, в тому числі всі його методи. У багатьох випадках потрібно змінити роботу будь-якого методу. Зміна методу відбувається шляхом його заміщення в похідному класі.

Наприклад:

public class A

{ public int f()

{return 0;}

}

public class B:A

{

public int f()

{return 1;}

}

Метод f описаний і в базовому і в похідному класі. У наступному фрагменті програми викликається метод з класу В:

B b=new B();

int i=b.f();

Але для об'єкта b можна викликати метод f базового класу, для цього треба виконати перетворення типів: ((A)b).f(); або A a=b; a.f();

В обох випадках буде викликана метод f базового класу. Для звичайних (не віртуальних) методів справедливо наступне правило:

При виклику не віртуального методу, метод визначається типом посилання.

Але в багатьох випадках для роботи з об'єктами похідних типів необхідні методи визначені в цих типах, навіть якщо робота виконується через посилання базових класів.

Для вирішення даної проблеми в об'єктно-орієнтованих мовах створені віртуальні методи.

Переглядів: 4052






© 2012 ci-sharp.ru При використанні матеріалу пряме iндексуюче посилання на сайт ОБОВ'ЯЗКОВЕ.
Права строго захищені нормами міжнародного права, інтелектуальної власності та авторського права.