zoukankan      html  css  js  c++  java
  • 父类子类构造函数的执行顺序

    代码
        class Program
        {
            
         
    class A
         {
              
    public A(){
                    PrintFields();
               }
              
    public virtual void PrintFields(){}
          }
         
    class B : A
         {
             
    int x = 1;
             
    int y;
             
    public B()//new B()时会先new父对象A
             {
                 y 
    = -1;
             }
             
    public override void PrintFields()
             {
                 Console.WriteLine(
    "x={0},y={1}", x, y);
             }
         }

            
    static void Main(string[] args)
            {
                B b 
    = new B();
                
    // 当使用new B()创建B的实例时,产生什么输出?
                
    // 答案:输出为x=1,y=0
                
    //(继承的子类在new时,先new父类对象,然后new自身私有成员,当调用b.PrintFields()时,则输出x=1,y=-1)

            }
        }
    代码
    namespace ConsoleApplication2
    {
        
        
    class A
        {
            
    public static int X;
            
    static A()
            {
                X 
    = B.Y + 1;
            }
        }
        
    class B
        {
            
    public static int Y = A.X + 1//执行该语句时,会先执行A的构造函数
            static B() { }
            
    static void Main()
            {
                Console.WriteLine(
    "X={0},Y={1}", A.X, B.Y);
                
    //产生的输出结果是什么? X=1,Y=2

            }
        }

    }
  • 相关阅读:
    .NET Core log4net 使用(转贴)
    Tomcat的工作原理
    Servlet工作原理
    java实现快速排序
    正则表达式积累
    js常用知识真理
    最常用的的设计模式
    【设计模式】单例设计模式
    java中堆栈区别,递归和迭代区别
    Struts2的工作原理
  • 原文地址:https://www.cnblogs.com/hubcarl/p/1675325.html
Copyright © 2011-2022 走看看