在类Tester中定义方法如下,
public double max(int x, int y) { // 省略 }
则在该类中定义如下哪个方法头是对上述方法的重载(Overload)?
1 同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载
2 参数列表不同指参数的类型,参数的个数,参数的顺序至少一项不同
3 方法的返回值类型,方法的修饰符可以不同。
1.父类中被final修饰的方法不能被重写
2.子类的重写方法不能比父类的被重写方法有更严格的访问级别,但可以更广泛。也就是 子类覆盖方法的访问权限必须大于等于 父类被重写方法的访问权限
3.方法名必须一样
4.参数列表必须一样。
5.返回值类型必须一样
6.重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。
7.如果一个方法不能被继承,则不能重写它。最典型的例子为,被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
8.如果想调用父类被覆盖的方法,用super关键字调用
区别点 | 重载 | 重写 |
参数列表 | 必须不同 | 必须相同 |
返回类型 | 无限制 | 返回类型小于等于重写的方法 |
抛出异常 | 无限制 | 抛出异常必须是重写的方法抛出异常类型或为其子类型 |
访问权限 | 无限制 | 访问权限必须大于等于重写的方法 |