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

            }
        }

    }
  • 相关阅读:
    hdu_5961_传递(bitset)
    hdu_5963_朋友(找规律)
    hdu_5968_异或密码(预处理+二分)
    hdu_5969_最大的位或(贪心)
    hdu_5965_扫雷(递推)
    hdu_5950_Recursive sequence(矩阵快速幂)
    hdu_5286_wyh2000 and sequence(分块)
    [BZOJ1951][SDOI2005]古代猪文(数论好题)
    [BZOJ2659][WC2012]算不出的算式(几何)
    [BZOJ 2656][ZJOI2012]数列(递归+高精度)
  • 原文地址:https://www.cnblogs.com/hubcarl/p/1675325.html
Copyright © 2011-2022 走看看