我被给了一个问题来确定以下访问是否合法。受保护字段外部包的Java访问控制
package SomePack;
public class A1 {
...
protected int y1;
}
///////////
package Whatever;
class B2 extends A1 {
void h(SomePack.A1 x) {
x.y1 = 3; // Is this line legal?
}
}
我想这大概是合法的,因为 1. Y1场protected
extends
A1
所以B2是A1的亚型。 3.访问控制基于静态类型,x的静态类型为A1。
但面试官说答案应该是非法的。任何人都可以解释这一点?非常感谢。
这将帮助[控制对类的成员的访问](https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) –
恕我直言,正确的采访答案是:“它不编译它的事情,不应该首先完成!“ –