方法隐藏和方法重写
当子类继承父类后对父类的方法有不同的实现方式,可以通过如下两种方法来实现。
(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(); //此处打印"医生的工作是看病!"
通过以上程序执行结果可以看出,子类成功的重写了父类方法,无论是父类的声明还是子类的声明,只要是子类的实例化,调用的一定是子类的方法。
本文来自博客园,作者:码农阿亮,转载请注明原文链接:https://www.cnblogs.com/wml-it/p/16106483.html
技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
开源库地址,欢迎点亮:
GitHub:https://github.com/ITMingliang
Gitee: https://gitee.com/mingliang_it
GitLab: https://gitlab.com/ITMingliang
建群声明: 本着技术在于分享,方便大家交流学习的初心,特此建立【编程内功修炼交流群】,为大家答疑解惑。热烈欢迎各位爱交流学习的程序员进群,也希望进群的大佬能不吝分享自己遇到的技术问题和学习心得!进群方式:扫码关注公众号,后台回复【进群】。