一道面试题

 

子类实例化时,先初始化自己的字段,然后到父类的构造方法,此时父类中如果有调用虚方法,如果子类覆写了,则会跳到覆写的方法中执行。运行完父类的构造器后,再回到子类自己的构造器!

Code
class Program
    {
        
static void Main(string[] args)
        {
            B _b 
= new B();
            Console.ReadLine();
        }
    }
    
class A
    {
        
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);
        }
    }

 

控制台上会输出:x=1,y=0

你可能感兴趣的:(面试题)