覆写(Override)与重载(Overload)

时间:2022-08-23 09:18:25


覆写(Override):子类中方法与其父类中方法的方法名和参数相同,则该方法被覆写。覆写是父类与子类之间多态性的体现,子类对父类的方法进行重新定义。

Java中,子类可以继承父类的方法而无需重新写形同的方法,但有时子类不想仅仅只是继承父类方法,而还想作些改动,此时便要覆写方法。即子类继承自父类相同方法名、参数,但要做出有别于父类的响应,此时就要在子类中重写该该方法,覆盖掉父类方法,如果还要父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。这是相同参数,不同实现,属动态多态性。

覆写规则

  • 覆写方法只能存在于具有继承关系中;
  • 只能重写父类非私有的方法;
  • 覆写时子类方法的访问修饰符的权限一定要大于其父类方法的访问修饰符(public>protect>default>private);
  • 覆写方法不能抛出新的检查异常,或者比起父类方法声明更宽泛的检查型异常。如:父类方法中声明了一个检查异常IOException,覆写这个方法时就不能抛出Exception,只能抛出IOExecption或其子类异常,可以抛出非检查型异常。


重载(Overload):类中创建多个具有不同参数、相同方法名的方法。调用时通过传递不同参数个数、参数类型决定具体使用哪个方法。重载是一个类内多态性的一种表现。可以理解为同一方法能根据不同参数列表,做出不同处理,是静态多态性。

重载规则:

  • 必须具有相同方法名、不同参数列表;
  • 可以有不同访问修饰符‘
  • 可以抛出不同异常