Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Domnin_Lab_9-12 / ЛАБ_9_C# / Наследование_Основы

.doc
Скачиваний:
16
Добавлен:
02.02.2015
Размер:
242.18 Кб
Скачать

// Создаем объект из объекта

public C(C ob) : base(ob)

{

ic = ob.ic;

}

// Определение результата деления jb/ib - метод divide

public double divide()

{

double d;

d = (double)jb / ib;

Console.WriteLine(" d = jb/ib = " + d);

return d;

}

//

public void showc()

{

Console.WriteLine(" ib+ic = " + (ib + ic));

}

}

class result11

{

public static void Main()

{

C c1 = new C(25, 5, 1000);

// Создаем копию объекта с1.

C c2 = new C( c1 );

Console.WriteLine("\n Сообщение о с1: ");

c1.showb();

c1.showc();

Console.WriteLine(" c1.divide = " + c1.divide());

Console.WriteLine("\n Сообщение о с2: ");

c2.showb();

c2.showc();

Console.WriteLine(" c2.divide = " + c2.divide());

Console.WriteLine("\n\n\n");

}

}

Рис 11 Передача ссылки на производный класс ссылке на базовый класс.

Пояснения:

1 Конструктор В() ожидает объект класса В, но ему конструктором С() передается объект класса С.

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

// Создаем объект из объекта

public C(C ob) : base(ob)

{

ic = ob.ic;

}

// Создается объект из объекта

public B(B ob)

{

ib = ob.ib;

jb = ob.jb;

}

3 Конструктор базового класса В() инициализирует только части объекта производного класса С, которые совпадают с членами класса В.

4 Производный класс может иметь дополнительные члены объекта, которые не совпадают с членами объекта базового класса.

18