写点什么

重载(overLoad)与重写 (override) 的区别与详解(详解 + 对比 + 代码示例)

  • 2022 年 6 月 07 日
  • 本文字数:809 字

    阅读完需:约 3 分钟

重载(overLoad)与重写(override)的区别与详解(详解+对比+代码示例)

@[toc]

1.1 方法重写和重载的区别

请看表格对比


如果你基础比较好,面向对象思想掌握的比较扎实,那你应该已经看懂了吧;如果还有疑问,请看下面更加详细的知识点和代码示例吧。



2.1 方法重载(OverLoad)

相同的方法名字,参数列表不同,调用也就不同例如(以下四个方法均构成重载):


//1号方法public sum (int a,int b){  return a + b;}//2号方法public sum (int a,int b,int c){  return a + b + c;}//3号方法public sum (int a,int c,int b,){  return a + b + c;}//4号方法public sum (int a,double c,int b,){  return a + b + c;}
复制代码
2.1.1 方法重载使用细节:
  1. 方法名:必须相同。

  2. 形参列表:必须不同(形参类型 &&个数 &&顺序,至少有一样不同,参数名无要求)。

  3. 返回值无要求。(3 号方法返回值类型为 int;4 号方法返回值为 double)

  4. 在调用 sum()方法时,根据参数列表来自己匹配合适的方法。


:airplane::airplane::airplane:

2.2 方法重写/覆盖(override)

发生在继承中,子类有一个方法,和父类的某个方法名称、返回类型、参数一样,即子类方法重写了父类方法

2.2.1 方法重写使用细节:
  1. 子类的方法的参数、方法名称要和父类完全一样

  2. 子类的方法返回类型和父类一样或者是父类返回类型的子类(例如:父类为 Object 子类为 String)

  3. 子类方法不能缩小父类方法的访问权限。


//Dog父类class Dog{public feed(){   System.out.print("喜欢吃骨头");}//Teddy(泰迪)子类}class Teddy extends Dog{public feed(){   System.out.print("喜欢吃面条");}}
复制代码


主类中实例化一个泰迪


Teddy wangwang = new Teddy;wangwang.feed();//
复制代码


以上有两个 feed 方法,因为子类 Teddy 类中的 feed()重写了父类 Dog 中的 feed(),所以这里输出的就是“喜欢吃面条”。以上就是重载与重写的区别与详细描述了!


肯定有人问:我的泰迪有时候喜欢吃面条,也有时候吃骨头,那我能不能让 Teddy(泰迪)类也调用父类中的 feed()方法呢?敬请期待下节的多态中的向上转型与向下转型

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022.06.02 加入

喜欢Java和py,会更新自己在学习过程中遇到**比较重要的知识点**以及**自己遇见的问题与解决方法**哦,如果你也正在学Java,就请留下一个关注吧

评论

发布
暂无评论
重载(overLoad)与重写(override)的区别与详解(详解+对比+代码示例)_javase_写代码两年半_InfoQ写作社区