Java の保護されたアクセス修飾子 (またはその背後にある設計) を理解するのに少し問題があります。パッケージへのアクセスと、抽象メンバを含むクラスを継承するオブジェクトを介したアクセスのことだと思っていました。
以下のサンプルコードを書きました。コメントアウトされた行のコメントを外すと、コンパイル エラーが発生することがわかります。Second の Second オブジェクトを介して pro にアクセスできるのに、Second の First オブジェクトを介してアクセスできないのはなぜですか?
package first;
public class First {
protected void pro(){
System.out.println("Can see protected method");
}
}
package first;
public class InFirst {
public static void main(String[] args){
First fst = new First();
fst.pro();
}
}
package second;
import first.First;
public class Second extends First {
public static void main(String[] args){
First fst = new First();
// fst.pro();
Second sec = new Second();
sec.pro();
}
}