русс | укр

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

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

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

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


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

Наследование и new модификатор


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


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

 

public class MyBaseC

{

public int x;

public void Invoke();

}

Объявление члена класса Invoke в наследуемом классе скрывает метод Invoke в базовом классе:

public class MyDerivedC : MyBaseC

{

new public void Invoke();

}

 

А вот данное-член x не было скрыто в производном классе соответствующим членом, следовательно, остаётся доступным в производном классе.

Сокрытие имени члена базового класса в производном классе возможно в одной из следующих форм:

Константа, поле, свойство, или внедрённый в класс тип или структура скрывают ВСЕ одноименные члены базового класса.

Внедрённый в класс или структуру метод скрывает в базовом классе свойства, поля, типы, обозначенные тем же самым идентификатором. Также в базовом классе скрываются одноимённые методы с той же самой сигнатурой.

Объявляемые в производном классе индексаторы, скрывают одноименные индексаторы в базовом классе с аналогичной сигнатурой.

В производном классе одновременное использование члена базового класса и его переопределённого потомка является ошибкой.

Полное квалифицированное имя. Примеры использования

В этом примере базовый и BC и производный DC классы используют одно и то же имя для обозначения объявляемого в обоих классах члена типа int. new модификатор подчеркивает факт недоступности члена x базового класса в производном классе. Однако из производного класса всё-таки можно обратиться к переопределённому полю базового класса с использованием полного квалифицированного имени.

 

using System;

public class BC

{

public static int x = 55;

public static int y = 22;

}

 

public class DC : BC



{

new public static int x = 100; // Переопределили члена базового класса

public static void Main()

{

// Доступ к переопределённому члену x:

Console.WriteLine(x);

// Доступ к члену базового класса x:

Console.WriteLine(BC.x);

// Доступ к члену y:

Console.WriteLine(y);

}

}

 

В производном классе DC переопределяется вложенный класс C. В рамках производного класса легко можно создать объект-представитель вложенного переопределённого класса C. Для создания аналогичного объекта-представителя базового класса, необходимо использовать полное квалифицированное имя.

 

using System;

public class BC

{

public class C

{

public int x = 200;

public int y;

}

}

 

public class DC:BC

{

new public class C // Вложенный класс базового класса скрывается

{

public int x = 100;

public int y;

public int z;

}

 

public static void Main()

{

// Из производного класса виден переопределённый вложенный класс:

C s1 = new C();

// Полное имя используется для доступа к вложенному в базовый класс:

BC.C s2 = new BC.C();

Console.WriteLine(s1.x);

Console.WriteLine(s2.x);

}

}



<== предыдущая лекция | следующая лекция ==>
Переопределение членов базового класса | Абстрактные функции и абстрактные классы


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


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

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

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


 


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

 
 

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

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