Java中子类的访问权限为何比父类大?

向上转型及java程序设计维护的原因

例:
假设一个父类A 拥有的方法 public void setXXX(){} 可以被其他任意对象调用
这个方法被子类B 覆写后为 protected void setXXX(){} 即 默认的访问权限只能被本类、本包及其子类 所访问

假设 其他包中的对象 C 调用方法为:
get( A a){
a.setXXX();
}
而此时传入的对象为B类对象,假设为b,此时b将转型为a,但是b中的setXXX() 调用权限已经被缩小了,这将造成错误。所以子类的方法的访问权限不能小于父类。

以上只是一个例子还有其他出于易维护、易代码结构设计的设计思想原因