子类父类构造方法执行顺序举例

来源:互联网 发布:淘宝女士小包包 编辑:程序博客网 时间:2024/05/16 08:08
using System;using System.Collections.Generic;using System.Linq;using System.Text;class A//new一个子类B的话,会先调用父类的构造函数,在调用子类的构造函数;然后,在调用子类的方法B.PrintFields().{     public A()    {           PrintFields();     }    public virtual void PrintFields(){}}class B:A{      int x=1;      int y;     public B()     {         y=-1;       }     public override void PrintFields()    {         Console.WriteLine("x={0},y={1}",x,y);      }     static void Main(string[] args)     {          new B().PrintFields();         Console.ReadKey();         //Console.WriteLine("x={0},y={1}", x, y);     }}


总结:如果子类定义了构造方法,在创建子类的对象的时候,首先执行父类的构造方法,然后执行自己的构造方法,父类的构造方法 public A()里面有PrintFields()——>public virtual void PrintFields(){}因为是虚函数so--->B类的重写函数public override void PrintFields()--->输出了x=1,y=0--->然后执行子类子类构造函数public B()--->y=-1;又因为在创建对象的时候在调用子类的函数PrintFields(),所以在执行完父类构造函数和子类构造函数之后,会再次执行子类的public override void PrintFields()函数--->再次输出了x=1,y=-1。








0 0
原创粉丝点击