
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
重载(overload)和覆盖(override,重写)是多态性的不同表现方式,也有人认为,重载与多态无关。覆盖一般用在不同的类之间,且这些类存在继承关系,而重载用在一个类中。
一、重载
重载是指在一个类中定义了多个同名的方法(成员函数,下同),这些方法或者有不同的参数个数,或者有不同的参数类型,方法返回值的类型既可以相同,也可以不同。
由于重载可以在同一个类中定义功能类似的方法,这给码农们管理类的相似方法提供了极大的方便。举个简单的例子,求整数的最大值问题,可能是求2个数的最大值public int max(int a,int b),也可能是求3个数的最大值public int max(int a,int b,int c),......,还可能是求n个数的最大值。在这个简单的例子中重载并没有明显的优势,可是当一个类中相似功能的方法有几十、上百个的时候,重载的优势就显现出来了,这时,码农们不需要去记这么繁多的方法名,而是将更多的精力放在程序本身上。
二、覆盖
覆盖是指派生类函数覆盖基类方法。覆盖一个方法并对其重写,以达到不同的作用。派生类中的覆盖方法必须要和基类中被覆盖的方法有相同的函数名、参数、返回值,派生类抛出的异常应该和基类相等或比基类更小。
基类中被覆盖的方法不能为private,否则其子类只是定义了一个方法,并没有对其覆盖,而是当作一个新的方法使用。
三、重载与覆盖的区别
对以上内容做个归纳,重载与覆盖的主要区别体现在以下几个方面:
1、覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用方法体是根据对象的类型来决定;而重载关系是根据调用时的实参表与形参表来选择方法体的。
武汉达内IT培训免费试听课程火热报名中,带你轻松入行,26大课程全国45个城市,129家中心均可就近学习,学完后,达内老师会帮助进行面试辅导,在面试前,就带你跨过可能存在的坑,让你入职更加顺利。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请添加3216764521学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。