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)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。