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; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型
}
class B 中的这几种情况都编译过,就是不理解。
(1)为什么重写父类方法就不能降低访问权限?
(2)为什么重载自身方法就无所谓访问权限?
谢谢回答~~
---------------问题补充---------------

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

posted @ 2015-11-07 22:48  剑芒  阅读(1357)  评论(1编辑  收藏  举报