• c#中的new和override的实例


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    /*
     简单说,抽象方法是需要子类去实现的。虚方法是已经实现了的,可以被子类覆盖,也可以不覆盖,取决于需求。
    
    抽象方法和虚方法都可以供派生类重写。
     */
    namespace MySpace
    {
        class dad
        {
            protected string name;      //成员变量
    
            public dad(string n)        //构造函数
            {
                name = n;
            }
            public void say()           //基类say方法
            {
                Console.WriteLine("I am {0}.", name);
            }
            public virtual void growup()    //基类growup方法 虚函数
            {
                Console.WriteLine("{0} has grown old.", name);
            }
        }
        class son : dad         //继承父亲
        {
            public son(string n)    //构造函数
                : base(n)
            {
                //name = n;
            }
            public new void say()   //在派生类中定义的和基类中的某个方法同名的方法,使用 new 关键字定义
            {
                Console.WriteLine("I am {0} and a son.", name);
            }
            public override void growup()   //重写(override)是用于重写基类的虚方法,这样在派生类中提供一个新的方法,继承类中的重写虚函数需要声明关键字 override
            {
                //base.growup();
                Console.WriteLine("{0} is growing up.", name);
            }
        }
        class entrance
        {
            public static void Main()
            {
                dad grandpa = new dad("grandpa");       //用父类生成的父类对象
                grandpa.say();      //父类say方法的调用
                grandpa.growup();   //父类growup方法的调用
    
                Console.WriteLine("
    new son("father")");
                dad father = new son("father"); //用子类生成的父类对象
                father.say();           //调用父类方法,访问隐藏方法是父类的方法
                father.growup();        //调用子类方法,访问重写方法是子类的方法
    
                Console.WriteLine("
    son tom = new son("Tom")");
                son tom = new son("Tom");   //用子类生成的子类对象
                tom.say();  //访问隐藏方法是子类的方法,访问重写方法是子类的方法
                tom.growup();
    
                //Console.ReadKey();
            }
        }
    }
    
    /*
    
    I am grandpa.
    grandpa has grown old.
    
    new son("father")
    I am father.
    father is growing up.
    
    son tom = new son("Tom")
    I am Tom and a son.
    Tom is growing up.
     * 
     * 上边的结果:
    
     1)用父类生成的父类对象,grandpa,访问隐藏方法是父类的方法,访问重写方法是父类的方法
     2)用子类生成的父类对象,father,访问隐藏方法是父类的方法,访问重写方法是子类的方法
     3)用子类生成的子类对象,son,访问隐藏方法是子类的方法,访问重写方法是子类的方法
    请按任意键继续. . .
    */
    

      这个实例比较好,因此特此转载。说明了new和override的区别。

  • 相关阅读:
    linux 操作命令
    Linux 安装问题
    margin和text-align实现水平居中的区别
    javascript关键字typeof、instanceof、constructor判断类型
    jquery经常用到的代码段
    Ubuntu安装Chrome浏览器及解决启动no-sandbox问题
    github基本使用---从零开始
    Jquery的load加载本地文件出现跨域错误的解决方案
    meta标签中设置以极速模式打开网页
    原生js动态创建文本内容的几种方式
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11886106.html
Copyright © 2020-2023  润新知