/*
* 這個程序說明:
* 如果基類繼承了接口,而派生類用new方式覆蓋了基類中方法
* 那麼,接口對方法的調用總是調用基類中的方法
* 而不管接口是通過基類還是派生類進行的
*/
using System;
namespace Test.Shengyi
{
internal interface IBase
{
void PrintName();
}
internal class Base : IBase
{
public void PrintName()
{
Console.WriteLine("Class name : Base");
}
}
internal class Derieved : Base
{
new public void PrintName()
{
Console.WriteLine("Class name : Derieved");
}
}
class MainProgram
{
static void Main()
{
Base b = new Base();
IBase ib;
ib = b;
ib.PrintName();
Derieved d = new Derieved();
ib = d;
ib.PrintName();
}
}
}
輸出結果:
Class name : Base
Class name : Base