C#子类和父类的构造顺序 - chunlieater/chunlifeet GitHub Wiki

子类和父类的构造顺序:

子类静态成员变量 -- 子类静态构造函数 -- 子类实例变量 -- 进入子类构造函数 -- 父类静态成员变量 -- 父类静态构造函数 -- 父类实例变量 -- 进入父类构造函数 --执行父类构造函数 -- 返回子类构造函数 --执行子类构造函数 。

  • 例子:
  • public class Test {

  • public  string Name = "";
    
  • public Test() {
    
  •     Debug.Log("this is test");
    
  • }
    
  • public void PraintName() {
    
  •     Debug.Log(Name);
    
  • }
    
  • }

  • public class Test2 : Test{

  • public  string Name = "Chunli";
    
  • public Test2() {
    
  •     Debug.Log("this is test2");
    
  • }
    
  • }

  • 如果子类和父类的成员变量或者成员函数名字相同,则默认子类隐藏父类(效果同new关键字),就是说子类和父类的变量相互不受影响,如果用子类对象调用, 就调用子类的成员,如果用父类对象调用,就访问父类成员,如果用子类对象调用父类的成员函数,那么函数中默认调用的同名成员变量 也是父类的。
  • override关键字可以覆盖父类的同名方法,覆盖后就算用多态调用改函数,访问的也是子类的函数,父类函数无法被访问(在子类内部可以通过base关键字调用)。