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
*/