方法隐藏和方法重写

当子类继承父类后对父类的方法有不同的实现方式,可以通过如下两种方法来实现。

(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();	//此处打印"医生的工作是看病!"

通过以上程序执行结果可以看出,子类成功的重写了父类方法,无论是父类的声明还是子类的声明,只要是子类的实例化,调用的一定是子类的方法。

posted @ 2022-04-06 15:04  码农阿亮  阅读(83)  评论(0编辑  收藏  举报