proctectedプロパティとメソッドのパケット依存性
この言い方は自分を理解するために作ったのです.
このときAとCは同梱
Bは継承されたAの方法と属性である
しかしAとCは同じパッケージです
だからアクセスできる
BとCを同梱している場合はアクセスできません
メソッドが存在するクラスとアクセスクラスが同じパッケージであれば可能であることがわかります!!
上を
アクセスできるのはAとCが同じパッケージの場合のみです
Bにメソッドproctect()がある場合
そのアクセス時に多態性でBにアクセスする方法
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にアクセスする方法