Java继承中为什么不可以降低父类重写方法的访问权限?

1

2

3

4

5

6

7

8

9

10

classA {

protectedintmethod1(inta,intb) {return0; }

}

publicclassBextendsA{

publicintmethod1(inta,intb) {return0; }//正确,重写父类方法,可以扩大访问权限

//private int method1(int a, int b) { return 0; } //错误,重写父类方法,不能降低了访问权限

//private long method1(int a, int b) { return 0; } //错误,重写父类方法,不能改变返回值类型

publicshortmethod1(inta,longb) {return0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型

privateintmethod1(inta,longb) {return0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型

}

class B 中的这几种情况都编译过,就是不理解。

(1)为什么重写父类方法就不能降低访问权限?

(2)为什么重载自身方法就无所谓访问权限?

谢谢回答~~

---------------问题补充---------------

@Yohns:public short method1(int a, long b) { return 0; } private int method1(int a, long b) { return 0; } 最后两行是不能同时存在的,因为参数一样,编译器会无法识别要载入哪一个