欢迎访问宙启技术站
智能推送

Java函数中的重载和重写的区别及使用方法

发布时间:2023-06-30 08:26:31

重载和重写是Java中两种不同的方法的使用方式。

1. 重载(Overload)指的是在一个类中定义多个相同的方法名,但是这些方法的参数个数、类型或顺序不同。编译器会根据方法调用时传入的参数来判断调用哪个重载方法。

例如:

public class MyClass {
    public void doSomething(int num) {
        System.out.println("doSomething with int");
    }
    
    public void doSomething(String str) {
        System.out.println("doSomething with String");
    }
    
    public void doSomething(int num1, int num2) {
        System.out.println("doSomething with two ints");
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.doSomething(5); // 输出 "doSomething with int"
        obj.doSomething("hello"); // 输出 "doSomething with String"
        obj.doSomething(3, 4); // 输出 "doSomething with two ints"
    }
}

2. 重写(Override)指的是子类重新定义或实现从父类继承的方法。子类中的方法具有相同的名称、返回类型和参数列表。重写方法在子类中提供新的实现逻辑,覆盖掉父类中的方法。

例如:

public class Shape {
    public void draw() {
        System.out.println("Drawing a shape");
    }
}

public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

public class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape shape1 = new Circle();
        shape1.draw(); // 输出 "Drawing a circle"
        
        Shape shape2 = new Rectangle();
        shape2.draw(); // 输出 "Drawing a rectangle"
    }
}

总结:

- 重载是在同一个类中定义多个相同名称的方法,但是方法的参数个数、类型或顺序不同。调用方法时,编译器会根据传入的参数类型来选择匹配的重载方法。

- 重写是子类重新定义或实现从父类继承的方法,具有相同的方法名、返回类型和参数列表。重写方法在子类中提供新的实现逻辑,覆盖父类中的方法。调用方法时,实际执行的是子类中重写的方法。

- 重载和重写都可以在提高代码的可读性和灵活性方面起到作用,但是它们的应用场景不同。重载主要用于处理方法的参数不同情况下的多种方式,而重写主要用于实现子类对父类的自定义逻辑或实现对父类方法的扩展和修改。