示例解析java重载Overloading与覆盖Overriding

 更新时间:2023年05月30日 09:26:47   作者:移动安全星球  
这篇文章主要介绍了java重载Overloading与覆盖Overriding的示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

在 Java 中,方法的重载(Overloading)和覆盖(Overriding)是两个重要的概念。它们都涉及到方法的定义与使用,但作用和规则有所不同。

重载(Overloading)

重载是指在同一个类中定义多个同名的方法,但它们的参数列表不同(参数的个数、类型或顺序不同)。重载允许我们使用相同的方法名来实现不同的功能,提高了代码的可读性和可维护性。

下面是一个重载的例子:

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;
    }
}

在这个例子中,Calculator 类有三个 add 方法,分别接受不同数量和类型的参数。当我们调用 add 方法时,Java 会根据传入参数的类型和数量自动选择正确的方法。

Calculator calculator = new Calculator();
int result1 = calculator.add(1, 2); // 调用第一个 add 方法,输出 3
double result2 = calculator.add(1.0, 2.0); // 调用第二个 add 方法,输出 3.0
int result3 = calculator.add(1, 2, 3); // 调用第三个 add 方法,输出 6

覆盖(Overriding)

覆盖是指子类重新定义父类的方法,以实现自己的功能。当子类覆盖父类的方法时,方法名、参数列表和返回类型必须与父类完全相同。覆盖允许我们在不修改父类的基础上,定制子类的行为。

下面是一个覆盖的例子:

public class Animal {
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }
}
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("The dog barks");
    }
}
public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("The cat meows");
    }
}

在这个例子中,Dog 和 Cat 类都继承了 Animal 类,并分别覆盖了 makeSound 方法。当我们调用 makeSound 方法时,Java 会根据对象的实际类型选择正确的方法。

Animal myAnimal = new Animal();
myAnimal.makeSound(); // 输出 "The animal makes a sound"
Animal myDog = new Dog();
myDog.makeSound(); // 输出 "The dog barks"
Animal myCat = new Cat();
myCat.makeSound(); // 输出 "The cat meows"

注意,当子类覆盖父类的方法时,可以使用 @Override 注解来显式声明。这样,如果我们不小心修改了方法签名或者拼写错误,编译器会报错,帮助我们捕获潜在的错误。

总结一下,重载和覆盖是 Java 中两个重要的概念。重载允许我们在同一个类中定义多个同名但参数列表不同的方法,实现不同的功能。覆盖允许子类重新定义父类的方法,定制自己的行为。理解这些概念并在实际编程中应用它们,可以帮助我们编写更高效、易读的代码。

以上就是示例解析java重载Overloading与覆盖Overriding的详细内容,更多关于java重载覆盖的资料请关注脚本之家其它相关文章!

相关文章

  • MyBatis中XML 映射文件中常见的标签说明

    MyBatis中XML 映射文件中常见的标签说明

    这篇文章主要介绍了MyBatis中XML 映射文件中常见的标签说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • springboot连接订阅OPCUA数据的实现

    springboot连接订阅OPCUA数据的实现

    本文主要介绍了springboot连接订阅OPCUA数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • sprng和struts有什么区别?

    sprng和struts有什么区别?

    Spring和Struts都是近年来比较流行的框架,Struts主要用于表示层,Spring用于业务层,以及Hiberate主要用于持久层,
    2015-06-06
  • 使用Java自定义注解实现一个简单的令牌桶限流器

    使用Java自定义注解实现一个简单的令牌桶限流器

    限流是在分布式系统中常用的一种策略,它可以有效地控制系统的访问流量,保证系统的稳定性和可靠性,在本文中,我将介绍如何使用Java自定义注解来实现一个简单的令牌桶限流器,需要的朋友可以参考下
    2023-10-10
  • Java实例讲解Comparator的使用

    Java实例讲解Comparator的使用

    我们先介绍一下comparator,我们后文称为比较器。比较器实际上是一个实现了comparator interface是一个实例,在Arrays.sort方法我们可以提供这样一个实例,即使被排序的object没有实现comparable接口,我们也可以排序了
    2022-11-11
  • @JsonSerialize注解的使用示例教程

    @JsonSerialize注解的使用示例教程

    在开发中,有时候某些字段需要特殊处理,比如我们有一个日期字段,当日期为NULL时给前端不返回NULL而返回为其他等信息,就需要自定义字段的序列化,这就是@JsonSerialize的用处,本文给大家介绍@JsonSerialize注解的使用,感兴趣的朋友一起看看吧
    2023-11-11
  • Java 判断字符串a和b是否互为旋转词

    Java 判断字符串a和b是否互为旋转词

    本篇文章主要介绍了判断字符串a和b是否互为旋转词的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05
  • Java中List与Map初始化的一些写法分享

    Java中List与Map初始化的一些写法分享

    这篇文章主要介绍了Java中List与Map初始化的一些写法有需要的朋友可以参考一下
    2014-01-01
  • Java创建文件夹及文件实例代码

    Java创建文件夹及文件实例代码

    Java创建文件夹及文件实例代码,需要的朋友可以参考一下
    2013-04-04
  • 详解如何在Java中加密和解密zip文件

    详解如何在Java中加密和解密zip文件

    在本文中,我们来学习如何用Zip4j库创建受密码保护的压缩文件并将其解压,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-09-09

最新评论