子类与父类一旦产生了继承关系之后,实际上子类 会继承父类中的全部定义,但是这里面也有可能出现不合适的场景。如果发现父类中设计不足并且需要保留父类中的方法或者属性名称的情况就会发生覆写。
方法覆写:
当子类定义了与父类方法名称相同,参数类型以及个数完全相同的时候,就称为方法的覆写。
范例:观察方法覆写
由于现在实例化的是子类对象,所以此时所调用的方法一定是被子类所覆写过的方法,如果该方法没有被覆写过,那么将调用父类中提供的方法,覆写的意义在于优化父类的功能。
覆写意义:
在子类进行方法覆写之后如果要想继续调用父类中的方法,那么就必须使用"super.方法()"
只要是在子类中调用父类方法的时候一定要在方法前追加“super.方法()”
方法覆写限制:被覆写的方法不能够拥有比父类方法更严格的访问控制 权限
对于访问控制权限:public >default > private,private 权限最小,如果你此时父类中的方法使用的是default权限定义,那么子类定义该方法时只能够使用public 、default定义,如果父类中的方法使用了public定义,那么子类中的方法只能够使用public定义。
范例:观察错误的覆写
private方法不存在覆写的情况,因为private父类方法不可以访问,对于子类来说,是一个不存在的方法,所以子类相当于新建了一个和父类重名的方法。
在以后的实际开发中,95%的情况下都是使用public,所以要覆写的情况下也考虑使用public
面试题:请解释override与overloading的区别?overloading返回值是否相同?
在进行方法重载时并没有对返回类型做出限定,但是好的习惯应该保持返回类型的一致