접근제한자는 클래스 및 클래스의 구성 멤버에 대한 접근을 제한하는 역할이다.
다른 클래스에서 클래스를 사용하지 못하도록 막거나 (클래스 제한)
클래스로부터 객체를 생성하지 못하도록 막거나 (생성자 제한)
특정 필드와 메소드를 숨김 처리한다 (필드 / 메소드 제한)
defaul
클래스 선언 시 아무 제한자도 명시하지 않았다면 자동적으로 컴파일러가 붙이는 제한자.
같은 패키지 내부에서만 호출이 가능하다
public
접근의 제한이 없어, 모든 패키지에서 호출이 가능하다.
protected
같은 클래스 내부에서는 public 취급,
자식 클래스가 아닌 다른 패키지의 클래스는 접근이 제한된다.
private
클래스 내부에서만 호출이 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
|
package Practice;
public class ClassA {
ClassA c1 = new ClassA(true);
ClassA c2 = new ClassA(true);
ClassA c3 = new ClassA("문자열");
ClassA(int data){}
public ClassA(boolean data) {};
private ClassA(String data) {};
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
|
package Practice;
public class ClassB {
ClassA c1 = new ClassA(true);
ClassA c2 = new ClassA(19);
// default인 boolean 생성자와
// public인 int 생성자는 호출이 가능하다.
// ClassA c3 = new ClassA("문자열");
// 하지만 private인 문자열 생성자는 호출이 불가능하다.
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package practice2;
import Practice.ClassA;
public class ClassB {
ClassA c1 = new ClassA(true);
// public 생성자 호출 가능
// ClassA c2 = new ClassA(12);
// default 생성자 호출 불가능 : package가 다름
// ClassA c3 = new ClassA("문자열");
// private 생성자 호출 불가능
}
|
cs |
'생각 두 접시' 카테고리의 다른 글
[java] 메소드 재정의 @Override (0) | 2024.06.01 |
---|---|
[java] Getter / Setter (0) | 2024.05.31 |
[java] 패키지 (0) | 2024.05.31 |
중복 요소 제거와 특정 키를 기준으로 오름차순 정렬하기 (0) | 2024.03.20 |
static에 관하여 (0) | 2024.03.20 |