JAVA中重写(Override)与重载(Overload)的相关示例

 更新时间:2023年10月28日 10:53:43   作者:许思王  
这篇文章主要给大家介绍了关于JAVA中重写(Override)与重载(Overload)的相关示例,重写(override)和重载(overload)是两种不同的方法重用技术,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

关于JAVA,我们也已经学习过一段时间了,今天我们来学习一下在JAVA中方法的重载与重写。

方法重载(Overload)

方法重载(overload)是指在一个类中定义多个同名但参数列表不同的方法。Java编译器会根据方法调用时传递的参数来选择调用哪个方法。方法重载的优势在于可以为相似功能的方法提供统一的方法名,方便代码编写和维护

重载的规则

  • 方法名必须相同。
  • 参数列表必须不同(个数、类型、顺序)。
  • 方法的返回类型可以相同也可以不同。
  • 不能仅依据返回类型的不同来重载方法。

示例代码

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public double add(double a, double b) {
        return a + b;
    }
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

在这个示例中,我们定义了三个名为add的方法,它们的参数列表不同。当需要调用add方法时,Java编译器会根据传入的参数类型和数量选择正确的方法进行调用。例如,add(1,2)会调用第一个add方法,add(1.0,2.0)会调用第二个add方法。

方法重写(Override)

在 Java 中,方法重写是指子类覆盖了父类中具有相同名称、参数列表和返回类型的方法。重写方法的目的是为了改变方法的实现,让子类的方法能够满足自己的需求,并且能够替换父类中的同名方法

重写的规则

  • 方法名称、参数列表和返回类型必须与父类中的方法相同。
  • 子类中重写的方法的访问修饰符不能低于父类中被重写的方法的访问修饰符。
  • 子类中重写的方法不能抛出比父类中被重写的方法声明的更多的异常类型。
  • 子类中无法重写父类中被声明为 final 的方法。

示例代码

class Animal {
   public void move() {
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("狗可以跑和走");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal(); // Animal 对象
      Animal b = new Dog(); // Dog 对象

      a.move(); // 执行 Animal 类的方法
      b.move(); // 执行 Dog 类的方法
   }
}

在上面的例子中,Animal 类有一个 move() 方法。在 Dog 类中,我们重写了这个方法,并且定义了新的实现方式。在 main() 方法中,我们创建了一个 Animal 类型的对象和一个 Dog 类型的对象。通过调用它们的 move() 方法,我们可以看到,当调用 Animal 类型的对象时,执行的是 Animal 类中的方法,而当调用 Dog 类型的对象时,执行的是 Dog 类中的方法。这就是方法重写的作用。

方法重载与方法重写的区别

方法重载指在同一个类中定义多个同名方法,但它们的参数列表不同(参数类型、参数个数、参数顺序不同)。Java 编译器会根据不同的参数列表来区分和调用不同的方法。在方法重载中,方法名相同,但参数列表不同,返回类型可以相同也可以不同

方法重载是在同一个类中出现,方法名相同,但参数列表不同,方法重写是在父类和子类之间出现,方法名、参数列表和返回值类型必须相同。

总结

到此这篇关于JAVA中重写(Override)与重载(Overload)的文章就介绍到这了,更多相关JAVA 重写与重载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA学习进阶篇之时间与日期相关类

    JAVA学习进阶篇之时间与日期相关类

    在日常的开发工作当中,我们经常需要用到日期相关的类,下面这篇文章主要给大家介绍了关于JAVA学习进阶篇之时间与日期相关类的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 使用Java WebSocket获取客户端IP地址的示例代码

    使用Java WebSocket获取客户端IP地址的示例代码

    在开发Web应用程序时,我们通常需要获取客户端的 IP 地址用于日志记录、身份验证、限制访问等操作,本文将介绍如何使用Java WebSocket API获取客户端IP地址,以及如何在常见的WebSocket框架中获得客户端 IP地址,需要的朋友可以参考下
    2023-11-11
  • Java经典排序算法之归并排序详解

    Java经典排序算法之归并排序详解

    这篇文章主要为大家详细介绍了Java经典排序算法之归并排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java基础教程之static五大应用场景

    Java基础教程之static五大应用场景

    这篇文章主要给大家介绍了关于Java基础教程之static五大应用场景的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 简单注解实现集群同步锁(spring+redis+注解)

    简单注解实现集群同步锁(spring+redis+注解)

    本文主要介绍了简单注解实现集群同步锁的步骤与方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • springboot 配置日志 打印不出来sql的解决方法

    springboot 配置日志 打印不出来sql的解决方法

    这篇文章主要介绍了springboot 配置日志 打印不出来sql的解决方法,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-11-11
  • SpringBoot2学习之springboot与spring区别分析

    SpringBoot2学习之springboot与spring区别分析

    这篇文章主要为大家介绍了SpringBoot2学习之springboot与spring区别分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • SpringBoot整合Xxl-Job的完整步骤记录

    SpringBoot整合Xxl-Job的完整步骤记录

    这篇文章主要给大家介绍了关于SpringBoot整合Xxl-Job的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java OpenCV实现人脸识别过程详解

    Java OpenCV实现人脸识别过程详解

    这篇文章主要介绍了Java OpenCV实现人脸识别过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Springboot集成activity过程图解

    Springboot集成activity过程图解

    这篇文章主要介绍了Springboot集成activity过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论