首页 > 其他 > 详细

继承与方法重写

时间:2015-04-28 18:13:19      阅读:214      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!