描述 Java 中的重载和重写

简介: 【8月更文挑战第22天】

重载

重载是指在同一个类中定义多个同名方法,但这些方法具有不同的参数列表。重载的方法可以具有不同的返回值类型,但不能具有相同的参数列表。

语法:

class MyClass {
   

    public void myMethod(int a) {
   
        // 方法体
    }

    public void myMethod(int a, int b) {
   
        // 方法体
    }

    public void myMethod(String s) {
   
        // 方法体
    }
}

在上面的示例中,myMethod方法重载了三次:

  • 第一个方法接受一个整型参数。
  • 第二个方法接受两个整型参数。
  • 第三个方法接受一个字符串参数。

重写

重写是指在子类中定义一个与父类中同名且具有相同参数列表的方法。重写的方法必须具有相同的访问权限或更高的访问权限,并且不能具有比父类方法更窄的返回值类型。

语法:

class ParentClass {
   

    public void myMethod() {
   
        // 方法体
    }
}

class ChildClass extends ParentClass {
   

    @Override
    public void myMethod() {
   
        // 方法体
    }
}

在上面的示例中,ChildClass 中的 myMethod 方法重写了 ParentClass 中的 myMethod 方法。

区别

重载和重写之间的主要区别在于:

  • 发生位置:重载发生在同一个类中,而重写发生在子类中。
  • 参数列表:重载的方法必须具有不同的参数列表,而重写的方法必须具有相同的参数列表。
  • 返回值类型:重载的方法可以具有不同的返回值类型,而重写的方法不能具有比父类方法更窄的返回值类型。

何时使用

重载:

  • 当需要为同一操作提供不同的功能时。
  • 当需要为不同的数据类型提供相同的功能时。

重写:

  • 当需要在子类中修改或扩展父类的方法时。
  • 当需要为子类提供特定实现时。

注意事项

  • 重载的方法不能具有相同的参数列表,即使它们具有不同的返回值类型。
  • 重写的方法必须具有相同的参数列表,但可以具有不同的访问权限或更窄的返回值类型。
  • 如果子类没有重写父类的方法,则子类将继承父类的方法实现。
  • 可以使用 @Override 注解来显式指定方法正在重写父类方法,这有助于避免错误。

结论

重载和重写是 Java 中强大的特性,它们允许开发人员创建更灵活和可重用的代码。重载允许在同一个类中创建具有不同功能或针对不同数据类型的方法,而重写允许在子类中修改或扩展父类的方法。通过理解重载和重写的区别以及何时使用它们,开发人员可以编写更有效和可维护的代码。

目录
相关文章
|
25天前
|
Java
【Java基础面试十八】、说一说重写与重载的区别
这篇文章阐述了Java中重写与重载的区别:重载是同一个类中方法名相同但参数列表不同的方法之间的关系,而重写是子类中方法与父类中相同方法名和参数列表的方法之间的关系,且子类的返回值应小于等于父类,访问修饰符应大于等于父类。
【Java基础面试十八】、说一说重写与重载的区别
|
27天前
|
存储 Java
|
25天前
|
Java
【Java基础面试二十二】、为什么要重写hashCode()和equals()?
这篇文章解释了为什么需要重写`hashCode()`和`equals()`方法:因为Object类的`equals()`默认使用`==`比较,这在业务中通常是不够的,我们需要根据对象内容来比较相等性;同时,为了保持`hashCode()`与`equals()`的联动关系,一旦重写了`equals()`,通常也需要重写`hashCode()`。
【Java基础面试二十二】、为什么要重写hashCode()和equals()?
|
25天前
|
Java
【Java基础面试十九】、构造方法能不能重写?
这篇文章指出Java中的构造方法不能被重写,因为构造方法必须与类名相同,而重写要求子类方法与父类方法同名,允许构造方法重写将违背这一规则。
【Java基础面试十九】、构造方法能不能重写?
|
24天前
|
算法 Java 索引
【Java集合类面试四】、 描述一下Map put的过程
这篇文章详细描述了HashMap中put操作的过程,包括首次扩容、计算索引、插入数据以及链表转红黑树和可能的再次扩容。
【Java集合类面试四】、 描述一下Map put的过程
|
23天前
|
存储 Java 索引
|
3月前
|
Java 编译器
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
|
4月前
|
Java
【Java开发指南 | 第二十五篇】Java 重写(Override)与重载(Overload)
【Java开发指南 | 第二十五篇】Java 重写(Override)与重载(Overload)
38 1
|
Java 编译器
Java重写(Override)&重载(Overload)
重写(Override)概述 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的子类,其中 Cat 类继承了 Animal 类。Animal 类中有一个名为 move() 的方法,Cat 类可以对这个方法进行重写。 Animal 类中的 move() 方法不是private 类型,因此它可以被其子类重写。在 Cat 类中,使用相同的名称和参数列表来重新定义了 move() 方法,并且使用 @Overrid
145 0