📅  最后修改于: 2023-12-03 15:01:49.746000             🧑  作者: Mango
在Java中,overloading(重载)和overriding(重写)是两个常见的概念。它们都是Java中的面向对象编程的重要特性,用于实现代码的灵活性和可重用性。
Overloading是指在一个类中定义多个同名的方法,但它们的参数列表不同。通过改变参数的个数、类型或顺序,可以让方法在相同的类中具有更多的灵活性和多样性。
访问修饰符 返回值类型 方法名(参数类型 参数名) {
// 方法体
}
访问修饰符 返回值类型 方法名(参数类型1 参数名1, 参数类型2 参数名2) {
// 方法体
}
public class OverloadingExample {
public int add(int a, int b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
public double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
OverloadingExample example = new OverloadingExample();
System.out.println(example.add(1, 2));
System.out.println(example.add(1, 2, 3));
System.out.println(example.add(1.5, 2.5));
}
}
在上面的示例中,OverloadingExample
类中定义了多个名为add
的方法,它们的参数列表不同。通过调用不同版本的add
方法,可以根据不同的参数类型和个数来执行相应的操作,实现了方法的重载。
Overriding是指子类对父类中已经存在的方法进行重新定义,以便实现自己所需的功能。子类可以继承父类中的方法,但有时可能需要修改特定方法的实现或行为。为此,可以在子类中使用相同的方法名、返回类型和参数列表来重写父类的方法。
访问修饰符 返回值类型 方法名(参数类型 参数名) {
// 子类特定实现
// ...
// 可以使用父类方法 super.方法名(参数列表) 调用父类的方法
}
public class Parent {
public void display() {
System.out.println("Parent display");
}
}
public class Child extends Parent {
@Override
public void display() {
System.out.println("Child display");
}
}
public class Main {
public static void main(String[] args) {
Parent parent = new Parent();
parent.display();
Child child = new Child();
child.display();
Parent childAsParent = new Child();
childAsParent.display();
}
}
在上面的示例中,Parent
类中有一个display
方法,然后在Child
类中重写了这个方法。在Main
类的main
方法中,我们创建了Parent
和Child
的实例,并调用了display
方法。可以看到,根据对象的类型不同,调用的方法也不同。子类重写的方法覆盖了父类的方法,这实现了方法的重写。
注意: 重载和重写是Java面向对象的核心概念之一,程序员应掌握它们的用法和区别,以便在实际开发中正确应用。