• 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的区别。

  • 相关阅读:
    WSDL2Java操作指南
    LVM 學習筆記 转载 
    TAR 的使用
    常用12种密码破解方法,一旦忘了密码可以补救,不要搞破坏
    ADAMS软件简介
    PPT演讲稿如何制作?
    window sp3第三方主题使用,改变主题,任务栏不变
    安装 Microsoft AppLocale 后出现的 Install Shield 安装界面乱码问题的解决办法
    K700C 港行的一般的设置,包括(GPRS上网设置,彩信设置,QQ设置等等)
    虚拟三维建模中的FSt格式文件介绍
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11886106.html
Copyright © 2020-2023  润新知