首页 > 其他 > 详细

B继承A并重写A中的打印方法,输出结果,详解

时间:2020-12-24 09:23:23      阅读:37      评论:0      收藏:0      [点我收藏+]
技术分享图片
 1  #region 实例化B 打印输出 结果为x=1,y=0为什么
 2         /*
 3           实例化B后,先进入B的构造函数,在进入A的构造函数,
 4           随之调用A中的 PrintFields(); 方法,由于在父类中
 5           该方法定义为虚方法,于是去找子类中被重写的方法,
 6           此时,子类中打印的结果分别为x,y的初始值即 x=1,y=0,
 7           但是,程序还没有结束,继续去子类中的构造函数,虽然
 8           x,y被重新赋值,因为在上一步中打印已经结束,最终输出的结果
 9           就是上面提到的,x,y的初始值
10          */
11         public class A
12         {
13             public A()
14             {
15                 PrintFields();
16             }
17 
18             public virtual void PrintFields() { }
19         }
20 
21 
22         public class B : A
23         {
24             int x = 1;
25             int y;
26 
27             public B()
28             {
29                 x = 2;
30                 y = -1;
31             }
32 
33             public override void PrintFields()
34             {
35                 Console.WriteLine("x={0},y={1}", x, y);
36             }
37         } 
38         #endregion
View Code

 

B继承A并重写A中的打印方法,输出结果,详解

原文:https://www.cnblogs.com/ABC-wangyuhan/p/14182420.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!