重载差异重写:重写发生在继承中,子类不仅要重写父类的方法方法主体,而且实现方法也不同,参数和返回类型必须相同,并且访问修饰符必须大于父类的权限。
改写规则:
1 .参数列表必须与重写的完全相同
2 .被重写的访问修饰符必须大于被重写的访问修饰符;
3 .重写返回的类型必须与重写的类型匹配或兼容。
4 .重写时抛出的异常必须小于被重写时抛出的异常。 可以相同,也可以是例外的子类
5 .被改写的方法不是private,私人的情况下不称为改写,与父类无关,重新定义了方法
6 .不能将静态方法改写为非静态方法(编译会出错) )。
7 .无论父类的方法是用常量final限定的还是任何访问修饰符,都不能重写该方法
重载发生在同一类中,数量不同于方法名称以外的参数类型。 重载的返回类型没有特殊要求,不能根据返回类型进行区分。 在同一类中,方法名称相同,参数列表不同;
过载规则:
1 .使用重载时,只能通过相同的方法名称、不同的参数格式来实现。 不同的参数类型可以是不同的参数类型、不同的参数数量和不同的参数顺序(参数类型必须不同)。
2 .不能通过访问修饰符、返回类型或抛出的异常进行重载
3 .方法的异常类型和数量不影响重载。
衔接与不同1 .这两种都是实现多态性的方式,不同的是过载是编译时出现的多态性,另一种是运行时的多态性。
2 .重载发生在类中,而重写发生在子类继承父类期间。 重载发生在一个类中,如果同名方法具有不同的参数列表(参数类型不同、参数数量不同和/或参数数量不同),则视为重载。
3 .重写发生在子类和父类之间。 重写中,子类的重写方法和父类的重写方法具有相同的参数列表,具有兼容的返回类型,比父类的重写方法更容易访问,并且不能声明比父类的重写方法更多的异常。
4 .过载对返回类型没有特殊要求,不能根据返回类型区分。