Java重写(Override)与重载(Overload)区别原理解析

下面是详细讲解“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();
    }
}

上述代码中,我们定义了AnimalDog两个类,其中Dog类继承了Animal类,并重写了其中的move()方法。在Test类中,我们分别创建了AnimalDog的对象,并调用了它们的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)区别原理解析

基础教程推荐