父類、接口二三事 - 相同方法繼承

 

static class Program
    {
        /// <summary>
        /// 應用程序的主入口點。
        /// </summary>
        [STAThread]
        static void Main()
        {
            IFactory i = new Children();
            i.Voice();
            i.Listen();

            Factory f = new Children();
            f.Voice();
            f.Listen();
            Console.ReadKey();
        }
    }

    public interface IFactory
    {
        void Voice();
        void Listen();
        void Write();
    }
    public abstract class Factory
    {
        public virtual void Voice()
        {
            Console.WriteLine("factory");
        }

        public abstract void Listen();

        public abstract void Write();
    }
    public class Children : Factory,IFactory
    {
        //當繼承了具備相同方法的父類和接口時,默認子類繼承了父類的方法,即繼承時已實現了接口的同名定義方法。不須要再次實現接口該方法了。
        //系統也會默認再也不提示實現。認定已實現。且若要從新實現,只能重寫父類的同名定義方法,或者new覆蓋該方法。不能以接口實現的方式實現
        //該方法。由於方法已經經過父類實現。若父類同名定義的方法爲抽象方法,則必須重寫父類的方法。同理此時,也不用實現接口定義的方法,由於自父類繼承已存在該方法。
        public override void Listen()
        {
            Console.WriteLine("listen");
        }
        public override void Write() => Console.WriteLine("write");
        //public override void Voice()
        //{
        //    base.Voice();
        //    Console.WriteLine("children");
        //}
        //public void Voice()
        //{
        //    throw new NotImplementedException();
        //}
    }

我的理解,不對請指正!ide

關注細節,關注容易忽略的,開發中以爲理所固然的,但其實只是只知其一;不知其二。spa

相關文章
相關標籤/搜索