C#中接口通過基類或派生類對方法的調用

/*
 * 這個程序說明:
 * 如果基類繼承了接口,而派生類用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章