码迷,mamicode.com
首页 > 其他好文 > 详细

继承与方法重写

时间:2015-04-28 18:15:15      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

  public class A
    {
        public virtual void Fun1(int i)
        {
            Console.WriteLine(i);
        }

        public void Fun2(A a)
        {
            a.Fun1(1);
            Fun1(5);
        }
    }

    public class B : A
    {
        public override void Fun1(int i)
        {
            base.Fun1(i + 1);
        }
    }

    class Program
    {
        public static void Main()
        {
            B b = new B();
            A a = new A();
            a.Fun2(b);
            b.Fun2(a);

            Console.ReadKey();
        }
    }

输出结果是

2

5

1

6

需要留意的是类A中的Fun2方法,在里面调用Fun1的时候,相当于是this.Fun1

所以在B类的实例对象,在调用的时候,Fun2是从A继承过来的,但是在Fun2方法里面调用Fun1的时候,调用的是其自身重写的方法Fun1

 

 

 

 

ps:如果把B中的override改为new的话,输出的结果:

1

5

1

5

继承与方法重写

标签:

原文地址:http://www.cnblogs.com/chucklu/p/4463361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!