在继承关系中,子类会自动继承父类中的方法,但有时父类的方法不能满足子类的需求,此时可以对父类的方法进行重写。当重写父类的方法时,要求子类的方法名、参数类型和参数个数必须与父类方法相同,而且父类方法必须使用关键字virtual修饰,子类方法必须使用关键字override修饰。
重写方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Person
{
//定义人的名字的方法,使用关键字virtual修饰该方法,表示其可被子类重写
public virtual void name()
{
Console.WriteLine("名字");
}
}
class ZhangShan : Person
{
public override void name()
{
Console.WriteLine("张三");
}
}
class Program
{
static void Main(string[] args)
{
ZhangShan zhangshan = new ZhangShan();//创建Zhangshan类的实例对象
zhangshan.name(); //调用zhanshan重写的name()方法
Console.ReadKey();
}
}
}
结果:
重写的目的:
子类想放弃父类中的同名方法,在子类中声明一个新的方法逻辑,从而采用子类中的自己的方法,有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,有自己的方法逻辑,只不过是想用父类的这个方法的名字,这就需要采用方法的重写。(来自别处)
注意:
子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限,例如父类方法的访问修饰符是关键字public,子类方法的修饰符就不能是关键字private。
重写好处:
重写的好处在于子类可以根据需要,定义特定于自己独特的行为。,也就是说子类能够根据需要实现父类的方法,只是引用了父类方法的名字,但是有自己的行为,自己去实现一些方法。(来自别处)