📜  Java中overloading与overriding(1)

📅  最后修改于: 2023-12-03 15:01:49.746000             🧑  作者: Mango

Java中overloading与overriding

在Java中,overloading(重载)和overriding(重写)是两个常见的概念。它们都是Java中的面向对象编程的重要特性,用于实现代码的灵活性和可重用性。

Overloading(重载)

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(重写)

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方法中,我们创建了ParentChild的实例,并调用了display方法。可以看到,根据对象的类型不同,调用的方法也不同。子类重写的方法覆盖了父类的方法,这实现了方法的重写。

总结
  • Overloading(重载)是在同一个类中定义多个同名方法,但参数列表不同。
  • Overriding(重写)是子类对父类中已存在的方法进行重新定义,以实现自己的需求。
  • Overloading和Overriding都是Java中实现多态的重要手段。

注意: 重载和重写是Java面向对象的核心概念之一,程序员应掌握它们的用法和区别,以便在实际开发中正确应用。