跳到主要内容

简述方法重载( Overload)与方法重写( Override)的区别?

参考答案:

方法重载(Overload)和方法重写(Override)是面向对象编程中的两个重要概念,它们虽然都与方法的命名有关,但是有着明显的区别。

  1. 定义:

    • 方法重载(Overload):在同一个类中,可以定义多个名称相同但参数列表(参数类型、顺序、个数)不同的方法。
    • 方法重写(Override):子类可以继承父类的方法,并且可以使用相同的方法名、参数列表和返回类型,但实现方式不同。
  2. 范围:

    • 方法重载(Overload):只在一个类中有效,属于编译时多态性。
    • 方法重写(Override):在子类与父类之间有效,属于运行时多态性。
  3. 参数:

    • 方法重载(Overload):参数个数、参数类型、参数的顺序可以不同。
    • 方法重写(Override):参数列表必须与父类中被重写的方法保持一致。
  4. 修饰符:

    • 方法重载(Overload):对修饰范围没有要求。
    • 方法重写(Override):重写方法的访问权限不能低于父类被重写的方法。
  5. 返回值:

    • 方法重载(Overload):与方法返回值无关,所以不能根据返回值类型区分是否是重载。
    • 方法重写(Override):返回值类型必须与父类中被重写的方法保持一致。

总结来说,方法重载和方法重写的主要区别在于它们的定义范围、参数、修饰符、返回值以及多态性的类型。方法重载在同一个类中实现,参数列表不同,属于编译时多态性;而方法重写发生在子类与父类之间,参数列表、返回值类型必须保持一致,并且访问权限不能低于父类被重写的方法,属于运行时多态性。