派生クラスに基本クラスのインスタンスを作成し、保護されたメンバーにアクセスしようとしました。
基本クラスをインスタンス化せずに、派生クラスの保護されたメンバーに直接アクセスできます。
基本クラス:
package com.core;
public class MyCollection {
protected Integer intg;
}
同じパッケージの派生クラス-
package com.core;
public class MyCollection3 extends MyCollection {
public void test(){
MyCollection mc = new MyCollection();
mc.intg=1; // Works
}
}
別のパッケージの派生クラス-
package secondary;
import com.core.MyCollection;
public class MyCollection2 extends MyCollection{
public void test(){
MyCollection mc = new MyCollection();
mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
}
}
派生クラスも同じパッケージにあるが、派生クラスが別のパッケージにある場合は、基本クラスのインスタンスを使用して、派生クラスの保護されたメンバーにアクセスするにはどうすればよいですか?
保護されたメンバーを「静的」としてマークすると、別のパッケージにある派生クラスの基本クラスのインスタンスを使用して、基本クラスの保護されたメンバーにアクセスできます。