zoukankan      html  css  js  c++  java
  • 父类、接口二三事

    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();
            //}
        }

    个人理解,不对请指正!

    关注细节,关注容易忽略的,开发中觉得理所当然的,但其实只是一知半解。

  • 相关阅读:
    Windows脚本 Bat批处理命令使用教程
    [Jobdu] 题目1420:Jobdu MM分水果
    排序算法的时间复杂度和空间复杂度
    (转) CS的顶级会议和期刊
    句柄是什么?1
    批处理for命令详解(转)
    cmd批处理常用符号详解
    【转帖】请问两个大于号>>代表什么意思?
    今天玩angry birds
    C/C++数组名与指针区别深入探索
  • 原文地址:https://www.cnblogs.com/LL-723/p/9669144.html
Copyright © 2011-2022 走看看