JAVA/패키지
패키지(2) - 접근 제어자(= 접근제한자 = 접근 수준 지시자)(access modifier)
jjhim531
2024. 7. 29. 12:31
반응형
* 자바는 4가지 종류의 접근제어자를 제공한다.
* 접근제어자의 핵심은 "정보은닉"이다!!(속성과 기능을 외부로부터 숨기는 것!!)
<접근제어자의 종류>
private | 모든 외부 호출을 막는다. 클래스 내부에서만 접근 가능. |
default (package-private) |
같은 패키지 안에서 호출은 허용한다. |
protected | 같은 패키지 안에서 호출은 허용한다. 패키지가 달라도 상속관계의 호출은 허용한다. |
public | 모든 외부 호출을 허용한다. |
* 허용범위 : private < default < protected < public
<default>
* 접근 제어자를 명시하지 않으면 같은 패키지 안에서 호출을 허용하는 default 접근 제어자가 적용된다.
정확히는 동일한 패키지 내의 다른 클래스에서만 접근이 가능하다.
<접근 제어자 사용 위치>
* 필드(인스턴스 변수), 메서드, 생성자에 사용된다.
* 클래스 레벨의 접근제어자도 일부 사용가능하다
<클래스 레벨의 접근 제어자 규칙>
* 클래스 레벨의 접근 제어자는 public, default만 사용할 수 있다.* public 클래스는 반드시 파일명과 이름이 같아야 한다.- 하나의 자바 파일에 public 클래스는 하나만 등장할 수 있다.- 하나의 자바 파일에 default 접근제어자를 사용하는 클래스는 무한정 만들 수 있다.
//PublicClass.java 파일
package access.a;
public class PublicClass {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
DefaultClass1 class1 = new DefaultClass1();
DefaultClass2 class2 = new DefaultClass2();
}
}
class DefaultClass1 {
}
class DefaultClass2 {
}
package access.a;
public class PublicClassInnerMain {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
DefaultClass1 class1 = new DefaultClass1();
DefaultClass2 class2 = new DefaultClass2();
}
}
package access.b;
//import access.a.DefaultClass1;
import access.a.PublicClass;
public class PublicClassOuterMain {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
//다른 패키지 접근 불가
//DefaultClass1 class1 = new DefaultClass1();
//DefaultClass2 class2 = new DefaultClass2();
}
}
728x90
반응형