Sauro Viti
Хитрость заключается в том, что вы можете использовать ссылку на базовый класс для ссылки на унаследованный, и во время выполнения, когда вы вызываете виртуальную функцию, использующую эту ссылку, вызывается переопределенная функция в унаследованном классе. Рассмотрим код ниже:
class BaseClass
{
public virtual void Test()
{
Console.WriteLine("BaseClass:Test()");
}
}
class ChildClassA : BaseClass
{
public override void Test()
{
Console.WriteLine("ChildClassA:Test()");
}
}
class ChildClassB : BaseClass
{
public override void Test()
{
Console.WriteLine("ChildClassB:Test()");
}
}
Теперь предположим, что вы пишете что-то вроде этого:
BaseClass obj = new ChildClassA();
obj.Test();
obj = ChildClassB();
obj.Test()
Результат, который вы получаете, выглядит примерно так:
ChildClassA:Test()
ChildClassB:Test()
Alim12345
Привет, Сауро, Спасибо за ответ. Мне нужно еще одно уточнение. Как и сказал У
BaseClass obj = новый ChildClassA();
если я хочу получить доступ к базовому классу.Функция Test () как я могу получить доступ к этому объекту?
Пожалуйста, ответь мне.
С уважением,
Алимов
Sauro Viti
Чтобы получить доступ к методу базового класса, вы должны написать:
BaseClass obj = новый базовый класс();
параметр obj.Тест();
Если вы имеете в виду "как получить доступ к версии метода BaseClass в дочернем классе", то ответ таков::
1) из базового класса ребенка.Тест();
2) из-за ребенка классе это не возможно
AminMhmdi
подняв объяснить, но то, что это благо, что у нас есть одна ссылка для multi производного класса?? это трюк для сохранения памяти или что-то в этом роде??