MST

星途 面试题库

面试题:Java中方法重载与重写在参数列表上的区别

请详细阐述在Java里,方法重载和重写对于方法参数列表的要求分别是什么,并各举一个简单示例代码说明。
27.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

方法重载(Overloading)

  1. 方法参数列表要求
    • 方法名相同,但参数列表不同。参数列表不同包括参数个数不同、参数类型不同或者参数顺序不同。返回值类型和访问修饰符可以不同,但仅返回值类型不同不能构成方法重载。
  2. 示例代码
public class MethodOverloadingExample {
    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;
    }
}

方法重写(Overriding)

  1. 方法参数列表要求
    • 方法名、参数列表(参数个数、类型、顺序)必须与父类中被重写的方法完全相同。返回值类型必须与父类中被重写方法的返回值类型相同或者是其子类型(Java 5.0 引入了协变返回类型)。访问修饰符不能比父类中被重写方法的访问修饰符更严格(例如,父类方法是 protected,子类重写方法不能是 private)。不能抛出比父类方法更多的异常(可以抛出更少或不抛出异常)。
  2. 示例代码
class Animal {
    public void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks");
    }
}