多态概念
同一个方法名,不同的实现结果
作用:
可以用于解除模块与模块之间的耦合性。
派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性
方法重载:
编译时多态,在一个类中,方法名相同,返回值类型不一定相同,参数列表不同,调用哪个方法由参数决定。
方法重写:
运行时多态,在继承关系中,子类与父类有相同的方法名,
相同的参数列表,相同的返回值类型;
方法重写的时候,如果父类没有抛出任何异常,那么子类只可以抛出运行时异常,不可以抛出编译时异常。
如果父类的方法抛出了一个异常,那么子类在方法重写的时候不能抛出比被重写方法申明更加宽泛的编译时异常。
子类重写方法的时候可以随时抛出运行时异常,包括空指针异常,数组越界异常等。
访问权限不能比父类中被重写的方法的访问权限更低。
声明为final的方法不能被重写。
声明为static的方法不能被重写,但是能够被再次声明。
子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。
如果不能继承一个方法,则不能重写这个方法。