C#中类的⽅法重写
“重写”⽗类⽅法就是修改它的实现⽅式或者说在⼦类中对它进⾏重新编写。
⼦类继承⽗类的⽅法,在调⽤对象继承⽅法的时候,调⽤和执⾏的是⽗类的实现。但是,有时候需要对⼦类中的继承⽅法有不同的实现⽅式。
例如,假设动物存在“叫”的⽅法,从中继承有猫类和狗类两个⼦类。writeline方法属于类
重写⽗类的⽅法要⽤到override关键字(具有override关键字修饰的⽅法是对⽗类中同名⽅法的新实现);要重写⽗类的⽅法,前提是⽗类中该要被重写的⽅法必须声明为virtual或者是abstract类型。给⽗类中要被重写的⽅法添加virtual关键字表⽰可以在⼦类中重写它的实现。(注:C#中的⽅法默认并不是virtual类型的,因此要添加virtual关键字才能够被重写);
virtual关键字⽤于将⽅法定义为⽀持多态,有virtual关键字修饰的⽅法为“虚拟⽅法”
[访问修饰符] virtual [返回类型] ⽅法名(参数列表)
{
//虚拟⽅法的实现,该⽅法可以被⼦类重写
}
public class MyBaseClass
{
public virtual void DoSomething()
{
Console.WriteLine("Base imp");
}
}
public class MyDerivedClass : MyBaseClass
{
public override void DoSomething()
{
Console.WriteLine("MyDerived imp");
}
}
重写⽅法将替换类中的实现代码,下⾯的代码将使⽤新的版本,即使这是通过基类类型进⾏的也是这样:
MyDerivedClass myObj=new MyDerivedClass();
MyBaseClass myBaseBbj;
myBaseObj=myObj;
myBaseObj.DoSomething();
结果如下:
Derived imp
注:base关键字⽤于从⼦类中访问⽗类成员。即使⽗类的⽅法在⼦类中重写,仍可以使⽤base关键字调⽤。⽽且,在创建⼦类实例时,可以使⽤base关键字调⽤⽗类的构造函数。使⽤base关键字只能访问⽗类的构造函数、实例⽅法或实例属性,⽽不能访问基类的静态⽅法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。