1、我们为什么需要方法的重写?
子类在继承父类的以后,就获取了父类中声明的所有的方法。但是,父类中的方法可能不太实用与子类,换句话说就是,子类需要对父类中继承过来的方法进行覆盖,复写的操作。
2、举例:
银行账户里有储蓄卡和信用卡两种卡。我们把储蓄卡的余额看作时父类,信用卡看作时子类时,同样的取钱方法,在信用卡和储蓄卡是需要不同的计算方法的。
3、方法重写需要遵守哪些规则呢?
方法声明的格式:
@override
权限修饰符 返回值类型 方法名(形参列表)throws 异常类型 {
方法体;
}
首行的@override 是可以省略的,但是为了起到方便阅读的作用,我们在重写方式时,一般加上。
具体的规则:
① 父类被重写的方法与子类重写的方法的 方法名 形参列表 必须相同。
② 子类重写的方法的权限修饰符不得小于父类被重写的方法的权限修饰符。
子类不能重写父类中声明为private的方法
③ 关于返回值类型:
父类被重写的方法的返回值类型时void,则子类重写的方法的返回值类型必须时void。
父类被重写的方法的返回值类型时基本数据类型,则子类v红鞋的方法的返回值必须 与被重写的方法的返回值相同。
父类被重写的方法的返回值时引用数据类型(比如类),则子类重写的方法的返回值类 型可以与父类被重写方法的返回值类型相同 或 时被重写方法的返回值类型的子类
④ 子类重写的方法抛出的异常类型可以与父类被重写的方法抛出的异常类型相同,或是父 类被重写抛出的异常类型的子类。
方法体是没有要求的 但是涉及到方法的重写,想必方法体肯定不同。
注意: 方法的重载和重写有什么不同呢?
重载是:两同一不同。(同一个类,方法名,形参列表不同)
重写是:继承以后,子类复写父类的方法。