不准确的地方请朋友加以指正出来,避免误导他人
首先代码类似如下
class Program
{
static void Main(string[] args)
{
new B();
}
}
class A
{
public A()
{
printFields();
}
public virtual void printFields()
{
Console.WriteLine("子类会调用基类的方法么?");
}
}
class B : A
{
int x = 1; int y;
public B()
{
y = -1;
}
public override void printFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
}
情况如上,调用结构如上:
总结:当且仅当子类重写父类方法的时候,即override的时候,实例子类调用基类的构造函数,基类调用的方法才是子类的,否则调用基类本身的方法