class A
{
public virtual void Method()
{
Console.WriteLine("My name is haha.");
} public A()
{
Method();
}
} class B : A
{
public override void Method()
{
Console.WriteLine("My name is zhanghao.");
} public B()
{
Method();
}
}最终B b=new B();在控制台输出的是:
My name is zhanghao.
My name is zhanghao.
而我自己给出的答案却是:
My name is haha.
My name is zhanghao.
为什么实例化B类的时候调用父类的构造函数时调用的方法是已重写的呢
这个功能也就是我们所说的“多态”了,
这也是与抽像方法的一个区别所在的。
我们知道 抽像的方法它只是一个定义的,是不能有方法体的,而虚方法则不一定了,必须要有一个方法体的,那怕是一个分号也行的。
虚方法与抽像的方法还有一个区别就是抽像的方法在子类当中一定要对它进行重写(override )的,而虚方法则是可以重写也可以不进行重写。
不知我的说的是否明白了。
所以我的答案是输出结果:
My name is zhanghao.
My name is zhanghao.有会问题可以进行沟通的。
public A()
{
Method();
}
之前就已经确定调用的Method 是B的了