java重写与重载的区别

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)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
posted @ 2018-12-23 23:28  Horken  阅读(198)  评论(0编辑  收藏  举报