我被給了一個問題來確定以下訪問是否合法。受保護字段外部包的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) –
恕我直言,正確的採訪答案是:「它不編譯它的事情,不應該首先完成!「 –