私はクラスでは、このように定義しました:Javaで保護された変数にこのようにアクセスできないのはなぜですか?
package prueba;
public class OtraClase {
[...]
protected int num3;
[...]
そして、このように定義された別のクラスを:
package otro;
import prueba.*;
public class OtraClaseMas extends OtraClase{
しかし、その最後のクラスで私はこのような何かを行うことはできませんOtraClaseオブジェクトを作成した場合:
createdObjectOfOtraClase.num3=1;
ドキュメントによれば、私はhereにできるはずです。 protected修飾子は、別のパッケージ内のそのクラスのサブクラスによるアクセスを許可すると言います。私はそれを見る限り、別のパッケージのクラスのサブクラスとは別のものではありません。
私は何かを誤解していますか?
編集:私はクラスのコンストラクタを使用していますが、別の異なる関数でも、どちらの場所でも動作しません。コンストラクタの
コード:メソッドの
がpublic OtraClaseMas(int num, int num2,int num3)
{
super(num, num2,num3);
OtraClase oc=new OtraClase(1,1,1);
//oc.num3=1; This doesn't work
}
コード:あなたは、オブジェクトを正しく初期化されていることを確認
public void foo()
{
OtraClase oc=new OtraClase(1,1,1);
//oc.num3=1; This doesn't work
}
'createdObjectOfOtraClase.num3 = 1; 'の呼び出しはどこに表示できますか? –
問題を再現できません。 'createdObjectOfOrtaClase.num3 = 1'への呼び出しが' OrtaClaseMas'内で起こるなら、それはうまくいくはずです。 – Turing85
あなたは - 万が一、 'num3'を' final'と宣言しましたか? – Turing85