TIL|[Java]アクセス制御プログラム
Javaのアクセス制御者
Javaのアクセス制御者(Access Modifier)は、変数やメソッドを宣言するときにアクセスを制御する権限を設定し、アクセス制御者によってオブジェクト言語向けの重要な特性「カプセル化」を実現することができる.
<カプセル化>
オブジェクトへの直接アクセスをブロックして内部情報を非表示にし、オブジェクトが提供するフィールドとメソッドからアクセスを提供します.
Javaのアクセス制御者は4種類あります.
private
アクセス制御者の中で最も制限の強い制御者
private
である場合は、クラス内でのみアクセスできます.public class Sample {
private String secret;
private String getSecret() {
return this.secret;
}
}
上記の例のsecret変数およびgetSecret()メソッドは、Sample CLIESからのみアクセスできます. public
public
と宣言されたクラスメンバーは公開され、オブジェクトを使用するプログラムの任意の場所からアクセスできます. default
アクセス制御者を別途設定しない場合は、
default
アクセス制御者default
アクセス制御者は、同じパッケージ内でのみアクセスできます.house/House_yu.java
package house;
public class House_yu {
String lastName = "Yu";
}
house/House_kim.javapackage house;
public class House_kim {
String lastName = "Kim";
public static void main(String[] a rgs) {
House_yu yu = new House_yu();
System.out.println(yu.lastName);
// Houst_yu 클래스의 변수 lastName에 접근 가능
// Yu
}
}
上記の例では、2つのクラス(House yu、House kim)のパッケージはhouse
と同じであるため、House yuクラス変数lastNameにアクセスできます.protected
protected
アクセス制御者は、次の領域にアクセスできます.protected
protected
クラスが属するパッケージprotected
他のパケットを継承するサブクラスpackage house;
public class House_yu {
protected String lastname = "Yu";
}
house/person/Hyemco.javapackage house.person;
import house.House_yu;
public class Hyemco extends House_yu { // House_yu 상속
public static void main(String[] args) {
Hyemco name = new Hyemco();
System.out.println(name.lastname);
// Yu
}
}
House_yu
クラスは、そのクラスを継承するHyemco
クラスパケットとは異なるが、House_yu
の変数lastnameは保護されたアクセス制御者を有するため、他のパケットから継承されたサブクラスHyemco
アクセスname.lastname
にアクセスすることができる.defaultアクセス制御プログラムの場合、
name.lastname
でコンパイルエラーが発生します.Reference
この問題について(TIL|[Java]アクセス制御プログラム), 我々は、より多くの情報をここで見つけました https://velog.io/@hyemco/TIL-Java-접근-제어자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol