1、父类中有方法a,添加virtua修饰符可声明为虚方法,在子类中可以用override声明后重写方法a。
2、父类中有方法a,在子类中可以有new修饰符声明后隐藏父类方法。
子类重写方法后,对于子类的任何实例,父类的原方法a都已经不存在。
子类隐藏父类方法后,父类的原方法仍然存在,当子类的实例的类型转为父类时,调用的方法a即为原来的方法。
//重写方法
class A
{
public virtual void a()
{
Console.WriteLine('CLASS is A');
}
} class B:A
{
public override void a()
{
Console.WriteLine('CLASS is B');
}
} class client
{
static void main()
{
B b=new B();
A a=b; a.a();
b.a();
}
} /*输出
CLASS IS B
CLASS IS B
*/ //隐藏方法
class A
{
public void a()
{
Console.WriteLine('CLASS is A');
}
} class B:A
{
public new void a()
{
Console.WriteLine('CLASS is B');
}
} class client
{
static void main()
{
B b=new B();
A a=b; a.a();
b.a();
}
} /*输出
CLASS IS A
CLASS IS B
*/