下面是详细讲解“Java重写(Override)与重载(Overload)区别原理解析”的攻略:
下面是详细讲解“Java重写(Override)与重载(Overload)区别原理解析”的攻略:
Java重写(Override)与重载(Overload)区别原理解析
一、重写(Override)
1.1 定义
Java中,当子类继承父类时,如果子类需要覆盖(重写)父类中的方法,就需要使用重写。重写是指在子类中重新定义的方法覆盖在父类中定义的同名方法。
1.2 特点
- 返回值类型:子类重写的方法的返回值类型必须与父类被重写方法的返回值类型相同或者是其子类;
- 方法名:子类重写的方法的方法名必须与父类被重写方法的方法名相同;
- 参数列表:子类重写的方法的参数列表必须与父类被重写方法的参数列表相同;
- 修饰符:子类重写的方法的访问修饰符不能比父类被重写的方法的访问修饰符更低,不能使其不被继承;
1.3 示例
下面是一个简单的示例,展示了重写的基本用法:
class Animal {
public void move() {
System.out.println("Animal can move.");
}
}
class Dog extends Animal {
public void move(){
System.out.println("Dog can run and move.");
}
}
public class Test {
public static void main(String[] args){
Animal a = new Animal();
Animal b = new Dog();
a.move();
b.move();
}
}
上述代码中,我们定义了Animal
和Dog
两个类,其中Dog
类继承了Animal
类,并重写了其中的move()
方法。在Test
类中,我们分别创建了Animal
和Dog
的对象,并调用了它们的move()
方法。从运行结果可以看出,Animal
对象调用的是Animal
类中的move()
方法,而Dog
对象调用的是子类Dog
的重写方法。
二、重载(Overload)
2.1 定义
Java中,重载是指在一个类中定义多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些不同的方法就可以通过方法名来区分。
2.2 特点
- 方法名:相同;
- 参数列表:不同,即参数个数、类型或顺序不同;
- 返回值:可以相同也可以不同;
- 修饰符:可以相同也可以不同,并不参与重载;
2.3 示例
下面是一个简单的示例,展示了重载的基本用法:
class MathUtil {
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;
}
}
public class Test {
public static void main(String[] args) {
MathUtil mu = new MathUtil();
int i = 1, j = 2, k = 3;
double a = 1.2, b = 2.3;
System.out.println(mu.add(i, j));
System.out.println(mu.add(a, b));
System.out.println(mu.add(i, j, k));
}
}
上述代码中,我们定义了一个MathUtil
类,其中包含了三个同名的方法add()
,但它们的参数列表分别为(int a, int b)
、(double a, double b)
和(int a, int b, int c)
。在Test
类中,我们创建了MathUtil
的一个对象mu
,并分别调用了它的三个add()
方法。由于这三个方法的参数列表不同,所以可以通过方法名来区分它们。
本文标题为:Java重写(Override)与重载(Overload)区别原理解析
基础教程推荐
- Springboot使用redis实现接口Api限流的示例代码 2023-02-28
- Spring深入了解常用配置应用 2023-02-11
- java使用Socket实现文件上传功能 2022-10-30
- Java多线程之线程的创建 2024-03-01
- 基于Maven pom文件中属性变量总结 2023-08-10
- mybatisplus如何解决分页最多500条数据 2023-02-20
- Java easyexcel使用教程之导出篇 2022-12-07
- MybatisPlus如何处理Mysql的json类型 2023-02-19
- jsp编程中session的用法实例分析 2023-08-03
- JSP+Ajax 添加、删除多选框 2023-12-15