当子类继承父类后对父类的方法有不同的实现方式,可以通过如下两种方法来实现。
(1)隐藏父类方法。
(2)重写父类方法。
一、隐藏父类方法
//人
class Person
{
pub void Work()
{
Console.WriteLine("人在工作!");
}
}
//定义医生类继承于人类
class Doctor : Person
{
public new void Work() //隐藏父类工作方法
{
Console.WriteLine("医生的工作是看病!");
}
}
Doctor doctor = new Doctor();
doctor.Work(); //此处打印"医生的工作是看病!"
Person person = new Doctor();
person.Work(); //此处打印"人在工作!"
通过以上程序的执行结果可以看出,子类成功的隐藏了父类的方法:
(1)当子类声明+子类实例化的时候调用的是子类的方法。
(2)当父类声明+子类实例化的时候调用的是父类的方法。
二、重写父类方法
class Person
{
//使用virtual关键字定义虚方法
public virtual void Work()
{
Console.WriteLine("人在工作!");
}
}
class Doctor : Person
{
//使用override关键字重写父类的虚方法
public override void Work()
{
Console.WriteLine("医生的工作是看病!");
}
}
Doctor doctor = new Doctor();
doctor.Work(); //此处打印"医生的工作是看病!"
Person person = new Doctor();
person.Work(); //此处打印"医生的工作是看病!"
通过以上程序执行结果可以看出,子类成功的重写了父类方法,无论是父类的声明还是子类的声明,只要是子类的实例化,调用的一定是子类的方法。
网友评论