【c#学习笔记二】虚方法与隐藏方法的区别

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注