Domnin_Lab_9-12 / ЛАБ_9_C# / Наследование_Основы
.doc// Создаем объект из объекта
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 Производный класс может иметь дополнительные члены объекта, которые не совпадают с членами объекта базового класса.