ブログのソース:
参照ブログのソース:https : //blog.csdn.net/asahinokawa/article/details/80777302
以前は一方的なことを知っていましたが、今は修正する必要があります
誤解:保護されたメンバーはサブクラスから見えます。
現在の一方的な理解は次のとおりです。保護されたメンバーのサブクラスに対する可視性は、2つの状況に分けられます。
1.子クラスと親クラスが同じパッケージ内にある場合、親クラスの保護されたメンバーはパッケージ内の子クラスに表示されます。
親クラスの2サブクラスは、同じパッケージ内にないとき、サブクラスのインスタンスは、親クラスから継承し、その保護されたメンバーにアクセスすることができ、かつアクセスすることができない親クラスのインスタンス protectedメンバのを。
コード分析は次のとおりです。
パッケージcom.erlang.modifer01; //父类Animal
public class Animal { private String name; protected void run(){ } }
パッケージcom.erlang.modifer01; //同じパッケージのクラス public class Dog { public static void main(String [] args){ 動物anl = new Animal(); anl.name = "erhua"; // anl.run を介してコンパイル(); // }を介してコンパイル }
package com.erlang.modifer02;
import com.erlang.modifer01; // 異なるパッケージの下の サブクラス public class Dog extends Animal { public static void main(String [] args){ Animal anl = new Animal(); anl.name = "erhua"; //コンパイルエラー anl.run(); //コンパイルエラー Dog dog = new Dog(); dog.name = "erha"; // dog.run によってコンパイルされた(); // } によってコンパイルされた }