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

            }
        }

    }
  • 相关阅读:
    网站的内容安全策略(CSP)
    javascript学习日记--eval、prompt
    【java每日一学】Applet类详解
    JavaScript 闭包应用-打印所有li元素的内容
    JavaScript 闭包应用-计算打车价格
    JavaScript 闭包应用-点击li输出索引号
    JavaScript jQuery 任务清单 ToDoList
    JavaScript 面向对象TAB栏切换
    JavaScript 常见移动端网页特效
    JavaScript 移动端轮播图
  • 原文地址:https://www.cnblogs.com/hubcarl/p/1675325.html
Copyright © 2011-2022 走看看