proctectedプロパティとメソッドのパケット依存性


この言い方は自分を理解するために作ったのです.

package testproctected3;
public class A {
protected int i = 1;
protected void protect() {
System.out.println("A::protect");
}
}
package testprotect2;

import testproctected3.A;


public class B extends A {
protected void protect1()
{
System.out.println("B::protect");
}
}
package testprotect3;

import testproctected3.A;
import testprotect2.B;

public class C {
void g() {
// C B , ?
B b1 = new B();
b1.protect();
System.out.println(b1.i);
}
public static void main(String[]args)
{
new C().g();
}
}

このときAとCは同梱
Bは継承されたAの方法と属性である
しかしAとCは同じパッケージです
だからアクセスできる
BとCを同梱している場合はアクセスできません
メソッドが存在するクラスとアクセスクラスが同じパッケージであれば可能であることがわかります!!
上を

A b1 = new B();

アクセスできるのはAとCが同じパッケージの場合のみです
Bにメソッドproctect()がある場合
そのアクセス時に多態性でBにアクセスする方法