重载(overLoad)与重写 (override) 的区别与详解(详解 + 对比 + 代码示例)
@[toc]
1.1 方法重写和重载的区别
请看表格对比
如果你基础比较好,面向对象思想掌握的比较扎实,那你应该已经看懂了吧;如果还有疑问,请看下面更加详细的知识点和代码示例吧。
2.1 方法重载(OverLoad)
相同的方法名字,参数列表不同,调用也就不同例如(以下四个方法均构成重载):
复制代码
2.1.1 方法重载使用细节:
方法名:必须相同。
形参列表:必须不同(形参类型 &&个数 &&顺序,至少有一样不同,参数名无要求)。
返回值无要求。(3 号方法返回值类型为 int;4 号方法返回值为 double)
在调用 sum()方法时,根据参数列表来自己匹配合适的方法。
:airplane::airplane::airplane:
2.2 方法重写/覆盖(override)
发生在继承中,子类有一个方法,和父类的某个方法名称、返回类型、参数
一样,即子类方法重写了父类方法
2.2.1 方法重写使用细节:
子类的方法的
参数、方法名称
要和父类完全一样子类的方法返回类型和父类一样或者是父类返回类型的子类(例如:父类为 Object 子类为 String)
子类方法不能缩小父类方法的访问权限。
复制代码
主类中实例化一个泰迪
复制代码
以上有两个 feed 方法,因为子类 Teddy 类中的 feed()重写了父类 Dog 中的 feed(),所以这里输出的就是“喜欢吃面条”。以上就是重载与重写的区别与详细描述了!
肯定有人问:我的泰迪有时候喜欢吃面条,也有时候吃骨头,那我能不能让 Teddy(泰迪)类也调用父类中的 feed()方法呢?敬请期待下节的多态中的向上转型与向下转型
版权声明: 本文为 InfoQ 作者【写代码两年半】的原创文章。
原文链接:【http://xie.infoq.cn/article/cf233e13a4ebc193520913725】。文章转载请联系作者。
评论