重载指的是在同一个类中,可以使用相同的方法名,但是方法名后面的参数列表必须不同。也就是说,同一个方法名可以对应多个不同的方法,这些不同的方法在参数列表的类型、数量或者顺序上都有所区别。
Java基础之重载(Overload)与重写(Override)详解
什么是重载(Overload)?
重载指的是在同一个类中,可以使用相同的方法名,但是方法名后面的参数列表必须不同。也就是说,同一个方法名可以对应多个不同的方法,这些不同的方法在参数列表的类型、数量或者顺序上都有所区别。
重载方法的形式:
// 仅仅参数类型不同
public void doSomething(int num) { ... }
public void doSomething(double num) { ... }
// 参数的数量不同
public void doSomething(int num) { ... }
public void doSomething(int num, String name) { ... }
// 参数的顺序不同
public void doSomething(int num, String name) { ... }
public void doSomething(String name, int num) { ... }
重载规则
Java中对于重载方法的要求如下:
- 同一类中方法名相同但参数列表不同。
- 不能仅仅依靠返回值的不同来重载方法。
- 只有参数列表不同时,才能够进行重载。
- 如果参数个数相同,则参数类型可以不同,前提是它们不构成歧义(即只有一个方法以上符合调用时传入的参数类型和个数)。
- 如果两个或两个以上的方法符合前三个条件,则采用参数数量最多的那个方法。
什么是重写(Override)?
重写指的是在子类中编写一个与其父类中方法名,返回类型、参数列表都相同的方法。子类重写(覆盖)继承自父类的方法时,必须与父类一模一样,包括方法名、返回值类型、方法参数、访问修饰符等。当子类对象调用该方法时,将优先调用子类中定义的方法,而不是父类中同名同参同返回值类型的方法。
重写方法的形式:
// 子类中重写了父类的方法
public class ChildClass extends ParentClass {
public void doSomething() { ... }
}
重写规则
Java中对于方法重写的要求如下:
- 方法名必须与被重写方法的方法名完全相同。
- 方法的返回类型与参数列表必须与被重写方法的返回类型和参数列表完全相同。
- 访问修饰符的限制不能比被重写方法的限制更严格(即 public > protected > default > private)。
- 重写的方法不能比被重写的方法抛出更广泛的异常。
- 重写的方法不能是final或static类型。
举例说明
重载方法的举例
public class OverloadDemo {
public void doSomething(int num) {
System.out.println("重载方法1:" + num);
}
public void doSomething(double num) {
System.out.println("重载方法2:" + num);
}
public void doSomething(int num, String name) {
System.out.println("重载方法3:" + num + " " + name);
}
public void doSomething(String name, int num) {
System.out.println("重载方法4:" + name + " " + num);
}
public static void main(String[] args) {
OverloadDemo demo = new OverloadDemo();
demo.doSomething(1);
demo.doSomething(1.0);
demo.doSomething(1, "hello");
demo.doSomething("hello", 1);
}
}
运行结果:
重载方法1:1
重载方法2:1.0
重载方法3:1 hello
重载方法4:hello 1
重写方法的举例
public class ParentClass {
public void doSomething() {
System.out.println("父类中的方法");
}
}
public class ChildClass extends ParentClass {
public void doSomething() {
System.out.println("子类中的方法");
}
public static void main(String[] args) {
ParentClass p = new ChildClass();
p.doSomething();
}
}
运行结果:
子类中的方法
在上面的例子中,尽管把子类对象存储在父类引用变量中,最终执行的却是子类中重写的方法。这就是Java中的方法重写机制。
编程基础网
本文标题为:Java基础之重载(Overload)与重写(Override)详解
基础教程推荐
猜你喜欢
- JSP自定义标签-标签属性_动力节点Java学院整理 2023-07-31
- java – 如何在使用Spring JdbcTemplate时动态更改数据库/目录 2023-10-30
- Java实现贪吃蛇大作战小游戏的示例代码 2023-03-15
- Spring @Component自定义注解实现详解 2023-05-14
- SpringBoot MyBatis保姆级整合教程 2023-02-05
- 详解JNI到底是什么 2024-01-14
- Mybatis条件if test如何使用枚举值 2022-12-10
- jQuery form插件的使用之处理server返回的JSON, XML,HTML数据 2024-01-04
- js函数获取html中className所在的内容并去除标签 2023-12-15
- Java 对象深拷贝工具类的实现 2023-03-11
