示例解析java重载Overloading与覆盖Overriding
作者:移动安全星球 发布时间:2021-11-03 17:22:19
标签: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 中两个重要的概念。重载允许我们在同一个类中定义多个同名但参数列表不同的方法,实现不同的功能。覆盖允许子类重新定义父类的方法,定制自己的行为。理解这些概念并在实际编程中应用它们,可以帮助我们编写更高效、易读的代码。
来源:https://segmentfault.com/a/1190000043842594


猜你喜欢
- 问题起因主要是使用mybatis作为ORM之后,返回的对象为Map,然后对于数据库的datetime,datestamp类型返回为时间戳而不
- 词云简介“词云”由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)于2006年最先使用,是通过形成“关键词云层”
- 本文实例讲述了Hibernate批量处理海量数据的方法。分享给大家供大家参考,具体如下:Hibernate批量处理海量其实从性能上考虑,它是
- 调试的时候,在循环里增加条件判断,可以极大的提高效率,心情也能愉悦。以下介绍下IDEA使用条件【Condition】断点的方法1、编写一段样
- Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开
- 本文实例讲述了C#创建临时文件的方法。分享给大家供大家参考。具体分析如下:C#可以通过Path.GetTempFileName获得一个临时文
- 前言本文主要给大家分享了关于java文字转语音播报的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧方法如下一、po
- 这些天忙着刷题,又怕遗忘了spring boot, 所以抽出一点时间折腾折腾,加深点印象。 spring boot 的文件上传与 sprin
- BeanUtilsBeanUtils是Apache commens组件里面的成员,由Apache提供的一套开源api,用于简化对javaBe
- @requestBody的作用及说明1、@requestBody注解常用来处理content-type不是默认的application/x-
- 这一篇就着重写一下客户端的代码,客户端主要实现的有:启动后检测本地的xml文件,然后发送到服务器获取需要更新的文件以及版本列表。循环下载。下
- 本文实例讲述了java编程实现基于UDP协议传输数据的方法。分享给大家供大家参考,具体如下:UDP协议(User Datagram Prot
- 本文实例讲述了C# WinForm制作异形窗体与控件的方法。分享给大家供大家参考,具体如下:制作异形窗体或控件的思路一般都是想办法生成一个r
- 在一次源码查看ThreadGroup的时候,看到一段代码,为以下:/* * @throws NullPointer
- 什么是事务处理事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency
- 一、编码规则Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组
- 首先假设你的应用程序配置文件如下:<?xml version="1.0" encoding="utf-8
- 实验环境hadoop版本:3.3.2jdk版本:1.8hadoop安装系统:ubuntu18.04编程环境:IDEA编程主机:windows
- TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点。TreeSet 和 Tree
- 前言大家应该都有所体会,在android开发中,需要展示图片的地方有很多..正常情况下展示一张图片的时候还需要在下面添加一个文字说明..我们