方法重载、方法重写的区别
在Java中,重写(Override)和重载(Overload)是两种不同的方法定义和使用方式。
方法重载(Overload)
-
重载指的是在同一个类中,使用相同的方法名称但具有不同的参数列表来定义多个方法。
-
重载方法的参数列表必须不同,可以有不同的数据类型、不同的参数个数或不同的参数顺序。
-
重载方法的返回类型 可以相同也可以不同。
-
重载方法在编译时 根据传入的参数来确定使用哪个方法。
示例:
class Calculator {
public int add(int a, int b) {
return a + b;
}
public float add(float a, float b) {
return a + b;
}
}
方法重写(Override)
-
重写 指的是在子类中重新定义(覆盖)父类的方法,以改变或扩展其实现。
-
重写 要求子类的方法与父类的方法有相同的名称、参数列表和返回类型。
-
重写 是实现多态性的关键机制之一,使得子类可以在运行时使用属于自己的方法实现,而不是继承自父类的方法。
-
重写时,子类中的方法不能比父类中的方法访问级别更严格,不能比父类方法抛出更多的异常
示例:
class Animal {
public void eat() {
System.out.println("Animal 在吃");
}
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("Cat 再吃!");
}
}
总结:
-
重载是在同一个类中创建多个方法,具有相同的名称但不同的参数列表(不同的数据类型、不同的参数个数或不同的参数顺序),以提供更多的灵活性和方便使用。
-
重写是子类覆盖父类的方法,并提供新的实现,实现多态性。