Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция11 Безопасность 2018.pptx
Скачиваний:
11
Добавлен:
08.12.2019
Размер:
120.16 Кб
Скачать

public void ShowStyle ()

{

Console.WriteLine(" Вид 4-хугольника – " + style);

}

}

//демонстрация вызова конструкторов

//наследуемого класса

class Class1

{

[STAThread]

static void Main(string[] args)

{

Figure3 t1 = new Figure3();

Figure3 t2 = new Figure3("прямоугольник", 3,4);

12

Figure3 t3 = new Figure3(2);

t1=t2;

Console.WriteLine("объект t1:");

t1.ShowStyle();

t1.ShowFigure2();

Console.WriteLine("объект t2:");

t2.ShowStyle();

t2.ShowFigure2();

Console.WriteLine("объект t3:");

t3.ShowStyle();

t3.ShowFigure2();

}

}

}

13

Доступ к переменным и методам и наследование

Скрытие переменных и методов

В наследующем классе допускается объявление переменных с теми же именами, что и в наследуемом классе.

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

Объявление переменной содержит ключевое слово new:

new access var_type var_name;

Смысл слова new - явное указание на то, что новая переменная скрывает одноименную переменную наследуемого класса.

14

В C# предусмотрен механизм доступа к скрытым таким способом переменным.

При обращении к скрытой переменной из наследуемого класса надо снабдить ее

ключевым словом base и

операцией уточнения

(аналог this, но для наследуемого класса).

Аналогично для методов:

новый одноименный метод объявляется с ключевым словом new;

метод наследуемого класса вызывается с указанием ключевого слова base.

15

Пример:

using System;

namespace HideDemo

{

//наследуемый класс

class A

{

public int i = 0;

public void show ()

{

Console.WriteLine("значение i в классе A="+i);

}

}

//наследующий класс

class B: A

{

new private int i; //скрыли i из класса А

16

//конструктор

public B(int a, int b)

{

base.i = a; // i из класса А

i = b; // i из класса B

}

//скрываем метод из класса А

new public void show ()

{

base.show(); // метод из класса А

Console.WriteLine("значение i в классе B ="+i);

}

}

17

class Class1

{

static void Main(string [ ] args)

{

B obj = new B(1, 2);

obj.show();

}

}

}

18