русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Переопределение членов базового класса


Дата добавления: 2015-07-09; просмотров: 1079; Нарушение авторских прав


При объявлении членов производного класса в C# разрешено использовать те же самые имена, которые использовались при объявлении членов базового класса. Это касается как методов, так и данных-членов объявляемых классов.

В этом случае соответствующие члены базового класса считаются переопределёнными.

Следующий простой фрагмент кода содержит объявления базового и производного классов. Особое внимание в этом примере следует уделить ключевому слову new в объявлении одноименных членов в производном классе. В данном контексте это слово выступает в качестве модификатора, который используется для явного обозначения переопределяемых членов базового класса.

При переопределении в производном классе наследуемого члена его объявление в производном классе должно предваряться модификатором new. Если этот модификатор в объявлении производного класса опустить - ничего страшного не произойдёт. Транслятор всего лишь выдаст предупреждение об ожидаемом спецификаторе new в точке объявления переопределяемого члена класса.

Дело в том, что переопределённые члены базового класса при “взгляде” на производный класс “извне” не видны. В производном классе они замещаются переопределёнными членами и непосредственный доступ к этим членам возможен только из функций-членов базового и производного классов. При этом для обращения к переопределённому члену из метода производного класса используется ключевое слово base.

По мнению создателей языка C# тот факт, что ранее (до момента его переопределения) видимый член (базового) класса стал недоступен и невидим извне (в результате его переопределения в производном классе), требует явного дополнительного подтверждения со стороны программиста.

 

using System;

namespace Inheritance_2

{

class X

{

public X(){}

public X(int key){}

 

public int q0;



public int q;

public void fun0()

{

Console.WriteLine(“class X, function fun0()”);

q = 125;

}

 

public void fun1()

{

Console.WriteLine(“class X, function fun1()”);

}

}

 

class Y:X

{

public Y(int key){}

public Y():base(125){}

new public int q; // Если опустить модификатор new -

new public void fun1() // появится предупреждение об ожидаемом new...

{

base.fun1(); // Обращение к переопределённым членам базового класса.

base.q = 125;

Console.WriteLine(“class Y, function fun1()”);

}

 

static void Main(string[] args)

{

Y y0 = new Y();

Y y1 = new Y(125);

// А извне переопределённые члены базового класса не видны.

y0.fun1();

y0.q = 100;

y0.fun0();

y0.q0 = 125;

}

}

}

 

Объявление класса может содержать вложенное объявление класса. C# допускает и такие объявления:

 

class X

{

public class XX

{

}

}

 

Так вот одновременное включение явного объявления класса или структуры с одним и тем же именем в базовый и производный классы также требует явной спецификации с помощью модификатора new:

 

 

class X

{

public class XX

{

}

}

 

class Y:X

{

new public class XX

{

}

}

 

Модификатор new используется при переопределении общедоступных объявлений и защищённых объявлений в производном классе для явного указания факта переопределения.



<== предыдущая лекция | следующая лекция ==>
Кто строит БАЗОВЫЙ ЭЛЕМЕНТ | Наследование и new модификатор


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.914 сек.