重写的特性:*
1.发生方法重写的两个方法的方法名、参数列表必须完全一致(子类重写父类的方法)
2.发生方法重写的两个方法的返回值,java 5或者以前,必须一样,java 7 java 8可以不同,但是必须是父类返回值的派生类。
3.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
解释:
(1)在java多态机制中,对象引用fs在编译时期是属于父类类型也即Father类型,但是在运行时fs属于子类类型,也就是Son类型
(2)也就是说在编译的时候,编译器发现catch中的IOException完全能将父类方法中抛出的异常捕获,因此编译通过,但是在运 行时期,由于fs变成了子类类型,子类重写的方法抛出的异常是Exception,显然IOException不能捕获这个比它更大的异常,因此在运行时期也就出现失败
4.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)
解释:
在一个软件系统中,子类应该可以替换任何基类能够出现的地方,并且经过替换以后,代码还能正常工作。举例、在父类中是public的方法,如果子类中将其降低访问权限为private,那么子类中重写以后的方法对于外部对象就不可访问了,这个就破坏了继承的含义