Java继承中为什么不可以降低父类重写方法的访问权限
1
2
3
4
5
6
7
8
9
10
|
class A { protected int method1( int a, int b) { return 0 ; } } public class B extends A{ public int method1( int a, int b) { return 0 ; } //正确,重写父类方法,可以扩大访问权限 //private int method1(int a, int b) { return 0; } //错误,重写父类方法,不能降低了访问权限 //private long method1(int a, int b) { return 0; } //错误,重写父类方法,不能改变返回值类型 public short method1( int a, long b) { return 0 ; } //正确,重载自身的方法,可以有不同的访问权限和返回值类型 private int method1( int a, long b) { return 0 ; } //正确,重载自身的方法,可以有不同的访问权限和返回值类型 } |
(1)为什么重写父类方法就不能降低访问权限?
(2)为什么重载自身方法就无所谓访问权限?
谢谢回答~~
---------------问题补充---------------
@Yohns:public short method1(int a, long b) { return 0; } private int method1(int a, long b) { return 0; } 最后两行是不能同时存在的,因为参数一样,编译器会无法识别要载入哪一个