using System;
class A
{
public A()
public virtual void P()
{ }
}
class B : A
{
int x = 1;
int y;
public B()
{ y = -2;
}
public override void P()
{
Console.WriteLine("x={0},y={1}", x, y);
}
class A
{
public A()
{
P();
}public virtual void P()
{ }
}
class B : A
{
int x = 1;
int y;
public B()
{ y = -2;
}
public override void P()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
说明几点:
1.子类B继承父类A,那么在实例化(就是给Bnew一个对象的时候),B要去调用,A的构造函数,那么显示声明A的构造函数就不能默认或者是私有的类型private;
2.在虚拟函数vistual的P函数,在子类里面是必须重载的override,也就是,A父类不写函数体,也可以写,大多子类来写,并且要加上override,不是overriding;
3.然后在实例化对象的时候,在继承这里面,都是首先初始化父类,然后是子类。
4.如果 new B().P();那么结果是什么?结果是:1,0 1,-2 。这里说明一下,这个y可能是任意值,在构造A的时候,不一定是0;