Применение ключевого слова base для доступа к скрытому имени

Имеется еще одна форма ключевого слова base, которая действует подобно ключевому слову this, за исключением того, что она всегда ссылается на базовый класс в том производном классе, в котором она используется. Ниже эта форма приведена в общем виде:

base.член

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

// Применение ключевого слова base для преодоления

// препятствия, связанного с сокрытием имен.

using System;

class А

{

public int i = 0;

}

// Создать производный класс.

class В: А

{

new int i; // этот член скрывает член i из класса А

public В(int a, int b)

{

base.i = a; // здесь обнаруживается скрытый член из класса А

i = b; // член i из класса В

}

public void Show()

{

// Здесь выводится член i из класса А.

Console.WriteLine("Член i в базовом классе: " + base.i);

// А здесь выводится член i из класса В.

Console.WriteLine("Член i в производном классе: " + i);

}

}

class UncoverName

{

static void Main()

{

В ob = new В(1, 2);

ob.Show();

}

}

С помощью ключевого слова base могут также вызываться скрытые методы. Например, в приведенном ниже коде класс В наследует класс А и в обоих классах объявляется метод Show(). А затем в методе Show() класса В с помощью ключевого слова base вызывается вариант метода Show(), определенный в классе А.

// Вызвать скрытый метод.

using System;

class А

{

public int i = 0;

// Метод Show() в классе A

public void Show()

{

Console.WriteLine("Член i в базовом классе: " + i);

}

}

// Создать производный класс.

class В: А

{

new int i; // этот член скрывает член i из класса А

public В(int a, int b)

{

base.i = a; // здесь обнаруживается скрытый член из класса А

i = b; // член i из класса В

}

// Здесь скрывается метод Show() из класса А. Обратите

// внимание на применение ключевого слова new.

new public void Show()

{

base.Show(); // здесь вызывается метод Show() из класса А

// далее выводится член i из класса В

Console.WriteLine("Член i в производном классе: " + i);

}

}

class UncoverName

{

static void Main()

{

В ob = new В(1, 2);

ob.Show();

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: