重写
在Java和其他一些高级面向对象的编程语言中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。(来源:百度百科)
要求:
- 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表
- 子类重写的方法的返回值类型小于等于父类被重写的方法的返回值类型
- 子类重写的方法使用的访问权限大于等于父类被重写的方法的访问权限
— !子类不能重写父类中声明为private权限的方法- 子类方法抛出的异常小于等于父类被重写方法的异常
- 注意点
子类与父类中同名同参数的方法必须同时声明为非static的(即为重写),或者同时声明为 static的(不是重写)。因为static方法是属于类的,子类无法覆盖父类的方法。
tip:同名的方法,用不同的对 象来区分调用的是哪一个方法。体现了多态性。
重载
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具参数列表不同(参数的类型或参数的个数或参数顺序)。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。
要求:
1.同一个类中的同名方法。
2.参数列表不同,具体指参数的类型或参数的个数或参数顺序不同。
- 注意点
1.只与参数列表有关。
2.与修饰符无关。
tip:同一个类中有同名方法,方法被调用时通过检查调用的方法的参数类型和个数来选择恰当的方法。体现了在同类中的多态性。
区别
- 参数列表:
重写时不能修改,重载必须修改
- 返回类型:
重写时子类不能大于父类,重载任意修改没有限制。
- 权限修饰符:
重写时子类不能小于父类,重载任意修改没有限制。
- 异常声明:
重写时子类不能大于父类,重载任意修改没有限制。