Привет!
Ниже представлен код. Ответьте на следующие вопросы:
1) Как вызвать функцию TestDerived.Print не указывая явно, что класс имплементирует интерфейс ITest?
2) Как вообще происходит вызов функции Print в 2-х случаях когда TestDerived: Test, ITest и когда TestDerived: Test?
При вызове CallPrint происходит преобразование к ITest, потом поиск функции идет в по какой таблице и у какого типа?
Видимо, если будет описано 2-е, то 1-е я сам пойму
interface ITest
{
void Print();
}
class Test : ITest
{
public void Print()
{
Console.WriteLine("Test class");
}
}
class TestDerived : Test // , ITest
{
public new void Print()
{
Console.WriteLine("TestDerived class");
}
}
....
public static void CallPrint(ITest iTest)
{
iTest.Print();
}
static void Main(string[] args)
{
TestDerived test = new TestDerived();
CallPrint(test); // Test class
}