基础才是重中之重~方法override详解_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 基础才是重中之重~方法override详解

基础才是重中之重~方法override详解

 2013/11/9 11:56:08  张占岭  博客园  我要评论(0)
  • 摘要:回到目录之所以写这篇文章,完全是因为这次代码审核,这次代码审核过程当中,出现了很多我认为基础知识不够扎实的问题,所以,打算把它们记录下来,共大家分享。方法的override,即方法的覆写或者重写,有时还是习惯叫它英文override,它是指将父类的abstract或者virtual方法进行重新设计,可以将新的功能加入其中,看起来很不错,但在使用过程中,有时我们可能被拿不准它,下面我说几后:一父类是抽象类,这时,它的实例化需要通过子类来完成,这时的override是子类最后重写的二父类是普通类
  • 标签:详解 方法 ide

回到 目录

之所以写这篇文章,完全是因为这次代码审核,这次代码审核过程当中,出现了很多我认为基础知识不够扎实的问题,所以,打算把它们记录下来,共大家分享。

方法的override,即方法的覆写或者重写,有时还是习惯叫它英文override,它是指将父类的abstract或者virtual方法进行重新设计,可以将新的功能加入其中,看起来很不错,但在使用过程中,有时我们可能被拿不准它,下面我说几后:

一  父类是抽象类,这时,它的实例化需要通过子类来完成,这时的override是子类最后重写的

二  父类是普通类,这时,它的实例化工作如果由自己完成,子类的override当然一起作用,它的结果就是自己的virtual方法的结果

OK,下面我们来说一下例子,它由father类和sons类组成,father类是一个普通类,在这实现当中,它很可能是个泛型类,如仓储模式的实现

   /// <summary>
    /// 一个爸爸
    /// </summary>
    class Father
    {
        public virtual void print()
        {
            Console.WriteLine("我是爸爸");
        }
    }

下面是儿子A对爸爸的print方法的重写工作

    /// <summary>
    /// 一个儿子A
    /// </summary>
    class SonA : Father
    {
        public override void print()
        {
            Console.WriteLine("我是儿子");//override father class print method.
        }

        public void sonPrint()
        {
            base.print(); //我是爸爸
            print();//我是儿子

        }
    }

而下面是对print方法的各种调用工作,包括了实现化的方式

     static void Main(string[] args)
        {

            SonA son = new SonA();
            son.sonPrint(); //我是爸爸,我是儿子
            Father father = new Father();
            father.print();//我是爸爸
            Father son2 = new SonA();
            son2.print();//儿是儿子
        }

OK,通过结果我们可以看出:

在儿子类里,base.print()方法走的是爸爸的print;print走的是儿子

在儿子类以外,使用爸爸自己去实例化后,print走的是爸爸的;使用儿子进行实例化后,print方法走的是儿子重写后的;

回到 目录

上一篇: 在jQuery定义自己函数 下一篇: 没有下一篇了!
发表评论
用户名: 匿名