アクセス制御者
17011 ワード
目次
1.アクセス制御者(access modifier)
1.1. アクセス制御者タイプ
1.1.1クラス前のアクセス制御者
1.2. アクセス範囲の順序
public > protected > default > private
すべてのpublicOOprotectedOOO(default)OOprivateO(デフォルト)
1.3. コード#コード#
1.3.1同類パッケージ
package access1;
public class Myparent {
private int pri;
int def;
protected int pro;
public int pub;
public void printMember() {
System.out.println(pri);
System.out.println(def);
System.out.println(pro);
System.out.println(pub);
}
public static void main(String[] args) {
Myparent p = new Myparent();
System.out.println(p.pri); //OK
System.out.println(p.def); //OK
System.out.println(p.pro); //OK
System.out.println(p.pub); //OK
}
}
1.3.2同一パッケージの異なるクラス
package access1;
public class Myparent {
private int pri;
int def;
protected int pro;
public int pub;
public void printMember() {
System.out.println(pri);
System.out.println(def);
System.out.println(pro);
System.out.println(pub);
}
}
class Mydef{
public static void main(String[] args) {
Myparent p = new Myparent();
System.out.println(p.pri); //에러
System.out.println(p.def); //OK
System.out.println(p.pro); //OK
System.out.println(p.pub); //OK
}
}
1.3.3他のパッケージが継承するサブクラス
package access2;
import access1.Myparent;
public class Mypro extends Myparent {
public void printMember() {
System.out.println(pri); //에러
System.out.println(def); //에러
System.out.println(pro); //OK
System.out.println(pub); //OK
}
}
1.3.4その他のパッケージその他のクラス
package access2;
import access1.Myparent;
class MyTest {
public static void main(String[] args) {
Myparent p = new Myparent();
System.out.println(p.pri); //에러
System.out.println(p.def); //에러
System.out.println(p.pro); //에러
System.out.println(p.pub); //OK
}
}
References
Reference
この問題について(アクセス制御者), 我々は、より多くの情報をここで見つけました https://velog.io/@withcolinsong/접근제어자access-modifierテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol