一、重写:
定义:子类对父类中允许访问的方法的方法体(即方法逻辑)进行重新编写。
意义:增强了类的复用性(即子类可以通过继承拿到父类的东西)、扩展性(即子类按照自己的需要加入自己的东西)
规则:
①方法名不变,即子类必须与父类的方法名称保持一致。
②入参列表不变,即子类必须与父类的入参列表保持一致。
③返回值类型是否可变,需要看所使用的jdk版本。
当是jdk5及以前的版本时,子类与父类的返回值类型必须保持一致。
当是jdk7及以后的版本则可以相同也可以不同,但当不同时则必须保证子类的返回值类型是父类返回值类型的派生类。
④子类不能抛出新异常或者比父类更大的异常,比如当父类的某个方法抛出的是检查异常IOException,那么子类在重写父类方法时就不能抛出Exception,因为Exception是IOException的父类。
⑤子类的访问修饰符级别不能低于父类相应方法的访问权限。
比如当子类与父类在同一包中时,子类可以重写父类中除final或private修饰的所有方法。
当子类与父类不在同一个包中时,子类只能重写父类中public或protected修饰的方法。
⑥当在子类中需要调用父类的方法时,需要使用super关键字调用。
⑦父类的成员方法只能被继承于它的子类所重写。
⑧父类中final声明的成员方法不可以被重写。
⑨父类中static修饰的成员方法也不可以被重写,因为它已经属于类方法了,使用时直接由类调用。但是可以重载。
⑩构造方法不可以被重写,但可以被重载.
二、重载
定义:方法名必须一致,参数列表必须不同(参数的个数或类型不同),返回值类型可以相同也可以不同。即定义在同一类中的两个或多个方法同名但不同参,这就叫做方法的重载。