重载(overLoad)与重写(override)的区别与详解

简介: 重载(overLoad)与重写(override)的区别与详解

1.1 方法重写和重载的区别

:rocket:请看表格对比

名称 发生范围 方法名 形参列表 返回类型 修饰符
重载(overload) 本类 必须一样 类型、个数、顺序至少有一个不同 无要求 无要求
重写(override) 父子类 必须一样 相同 子类重写的方法,返回类型和父类一样或者是父类的子类 子类方法不能缩小父类方法的访问范围

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

:airplane::airplane::airplane:

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(),所以这里输出的就是“喜欢吃面条”。
以上就是重载与重写的区别与详细描述了!

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

相关文章
|
7月前
|
Java 编译器
重载和重写的区别是什么?
重载和重写的区别是什么?
|
3月前
|
Java 编译器 数据安全/隐私保护
Java 重写(Override)与重载(Overload)详解
在 Java 中,重写(Override)和重载(Overload)是两个容易混淆但功能和实现方式明显不同的重要概念。重写是在子类中重新定义父类已有的方法,实现多态;重载是在同一类中定义多个同名但参数不同的方法,提供多种调用方式。重写要求方法签名相同且返回类型一致或为父类子类关系,而重载则关注方法参数的差异。理解两者的区别有助于更好地设计类和方法。
255 1
|
6月前
|
Java
重载与重写的区别
重载与重写的区别
48 5
|
6月前
|
Java
重载和重写区别
重载和重写区别
37 2
|
Java 编译器
Java重写(Override)&重载(Overload)
重写(Override)概述 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的子类,其中 Cat 类继承了 Animal 类。Animal 类中有一个名为 move() 的方法,Cat 类可以对这个方法进行重写。 Animal 类中的 move() 方法不是private 类型,因此它可以被其子类重写。在 Cat 类中,使用相同的名称和参数列表来重新定义了 move() 方法,并且使用 @Overrid
170 0
|
7月前
|
Java
Java重写(Override)与重载(Overload)
Java重写(Override)与重载(Overload)
|
7月前
|
Java 编译器
【JAVA】关于重写(Override)与重载(Overload)
【JAVA】关于重写(Override)与重载(Overload)
120 0
|
Java 编译器 程序员
Java 的重载(overload)和重写(override)
重载和重写都是面向对象编程中的概念,但我们或许还听说过一种叫做覆写(overwrite)的概念。C++ 是拥有这个概念的,Java 只有 overload 和 override,Python 只有隐式的 overload 和 override,没有 overwrite 的概念。在重载(overload)、重写(override)和覆写(overwrite)中,我们一般对前面两个比较熟悉,对最后一个会略微陌生一些。
201 1
|
Java 编译器
2. 什么是重载(Overload)和重写(Override) ?
重载(Overload): 重载是指在同一个类中可以定义多个具有相同名称但参数列表不同的方法。这些方法可以有不同的返回类型、不同的参数类型、不同的参数顺序或不同的参数个数。编译器根据方法的不同参数特征来区分它们,并根据调用时提供的参数类型和个数来确定执行哪个方法。简单来说,重载允许在同一个类中定义多个方法,以便根据不同的参数情况来执行不同的操作。
291 0