java重写与重载的区别

时间:2022-10-14 20:22:42

override(重写) :即把改方法重新写一次,内部逻辑可变,外壳不变,核心重写

1. 方法名、参数、返回值相同。

2. 子类方法不能缩小父类方法的访问权限。

3. 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

4. 存在于父类和子类之间,构造方法不能被重写。

5. 方法被定义为final不能被重写。

6. 申明为static的方法不能重写,但能够被再次申明。

7. 子类调用父类被重写的方法,super.方法名。

overload(重载):内部逻辑没变,只是传入的参数可以有所改变,

1. 参数类型、个数、顺序至少有一个不相同,保证独一无二。

2. 不能重载只有返回值不同的方法名。

3. 存在于父类和子类、同类中。

4. 可以申明新的或者更广泛的异常。

5. 可以改变访问修饰符

总结

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

  • (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
  • (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
  • (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。