静态方法与实例方法的区别
public class Parent
{
public void Method_A()
{
Console.WriteLine("Parent Method_A");
}
public virtual void Method_B()
{
Console.WriteLine("Parent Method_B");
}
}
public class Child : Parent
{
public new void Method_A()
{
Console.WriteLine("Child Method_A");
}
public override void Method_B()
{
Console.WriteLine("Child Method_B");
}
}
class Program
{
static void Main(string[] args)
{
Child child = new Child();
child.Method_A();
child.Method_B();
Parent p = child as Parent;
p.Method_A();
p.Method_B();
Console.Read();
}
}
显示结果
总结
1、子类使用new隐藏父类方法后,是独立于父类的方法。
2、子类使用override重写父类的方法后,只是在调用时不再调用父类方法而调用子类方法。
3、子类也可以使用new隐藏父类的虚方法。
4、创建的Child实例,在执行Method_A和Method_B方法时,都执行的是Child中的方法。
但是将该实例转换成父类时,Method_A执行的是Parent的Method_A方法,而Method_B执行的依旧是Child中的Method_B方法。