zoukankan      html  css  js  c++  java
  • 继承中new 与 override的作用

     class Program
        {
            static void Main(string[] args)
            {
                Person p = new Chinese();//子类转为父类,向上转型
                /**
                 * p.Speak() 之前我一直搞不明白为什么会执行Person.Speak()
                 * 最近我觉得是因为在子类中用了new关键字,把父类的方法给隐藏掉,相当于子类的Speak方法是不属于父类的,和SpeakPTH同级.
                 * */
                p.Speak();
                p = new English();
                p.Speak();//之所以调用English.Speak方法是因为把父类的Speak方法给重写了

                Console.ReadKey();
            }
        }

        class Person
        {
            public virtual void Speak()
            {
                Console.WriteLine("说话......");
            }

            public void Run()
            {
                Console.WriteLine("Running....");
            }
        }

        class Chinese : Person
        {
            //相当于子类的Speak方法与父类的Speak方法没有关系
            new public void Speak()
            {
                Console.WriteLine("说中国话......");
            }

            public void SpeakPTH()
            {
                Console.WriteLine("说普通话......");
            }
        }

        class English : Person
        {
            public override void Speak()
            {
                Console.WriteLine("说英语话......");
            }
        }

  • 相关阅读:
    在Windows 10 环境下安装 Hadoop3.1.2
    jQuery选择器分类
    Hibernate 注解的用法以及说明
    EF中Repository模式应用场景
    C# Lambda表达式
    arpd编译错误
    【转】matplotlib画图时的中文设置
    Xt800、DEFY自带号码归属地更新包,更新至2013.4【数据总数278360条】
    80个Python经典资料(教程+源码+工具)汇总
    POJ 1026:Cipher
  • 原文地址:https://www.cnblogs.com/yourancao520/p/2210153.html
Copyright © 2011-2022 走看看