Language/JAVA

[JAVA] 접근 제한자

IT수정 2024. 9. 4. 15:33

경우에 따라서는 객체의 필드를 외부에서 변경하거나 메서드를 호출할 수 없도록 막아야 할 필요가 있다. 중요한 필드와 메서드가 외부로 노출되지 않도록 해 객체의 무결성(결점이 없는 성질)을 유지하기 위해서이다. 자바는 이러한 기능을 구현하기 위해 접근 제한자(Access Modifier)를 사용한다. 접근 제한자는 다음 표처럼 나눌 수 있다.

접근 제한자 제한 대상 제한 범위
public 클래스, 필드, 생성자, 메서드 없음
protected 필드, 생성자, 메서드 같은 패키지이거나, 자식 객체
(default) 클래스, 필드, 생성자, 메서드 같은 패키지
private 필드, 생성자, 메서드 객체 내부 (클래스 내부)

 

클래스의 접근 제한

클래스를 어디에서나 사용할 수 있는 것은 아니다. 클래스가 어떤 접근 제한을 갖느냐에 따라 사용 가능 여부가 결정된다. 클래스는 public과 default 접근 제한을 가질 수 있다.

[ public ] class 클래스 {...}

 

클래스를 선언할 때 public 접근 제한자를 생략했다면 클래스는 default 접근 제한을 가진다. 이 경우 클래스는 같은 패키지에서는 아무런 제한 없이 사용할 수 있지만 다른 패키지에서는 사용할 수 없게 된다.

 

클래스를 선언할 때 public 접근 제한자를 붙였다면 클래스는 public 접근 제한을 가진다. 이 경우 클래스는 같은 패키지뿐만 아니라 다른 패키지에서도 사용할 수 있다.

 

생성자의 접근 제한

객체를 생성하기 위해 생성자를 어디에서나 호출할 수 있는 것은 아니다. 생성자가 어떤 접근 제한을 갖느냐에 따라 호출 가능 여부가 결정된다. 생성자는 public, default, private 접근 제한을 가질 수 있다.

public class ClassName {
	[ public | private ] ClassName() {...}
    }

 

접근 제한자 생성자 설명
public 클래스 (...) 모든 패키지에서 생성자 호출할 수 있다.
= 모든 패키지에서 객체 생성 가능
(default) 클래스 (...) 같은 패키지에서 생성자 호출할 수 있다.
= 같은 패키지에서 객체 생성 가능
private 클래스 (...) 클래스 내부에서만 생성자 호출할 수 있다.
= 클래스 내부에서만 객체 생성 가능

 

필드와 메서드의 접근 제한

필드와 메서드도 어디에서나 읽고 호출할 수 있는 것은 아니고, 어떤 접근 제한을 갖느냐에 따라 호출 여부가 결정된다. 필드와 메서드는 public, default, private 접근 제한을 가질 수 있다.

[public | private] 타입 필드;
[public | private] 리턴 타입 메서드(...) {...}

 

접근 제한자 생성자 설명
public 필드
메서드 (...)
모든 패키지에서 필드를 읽고 변경할 수 있다.
모든 패키지에서 메서드 호출할 수 있다.
(default) 필드
메서드 (...)
같은 패키지에서 필드를 읽고 변경할 수 있다.
같은 패키지에서 메서드 호출할 수 있다.
private 필드
메서드 (...)
클래스 내부에서만 필드를 읽고 변경할 수 있다.
클래스 내부에서만 메서드 호출할 수 있다.

 

'Language > JAVA' 카테고리의 다른 글

[JAVA] 싱글톤 패턴  (0) 2024.09.04
[JAVA] Getter와 Setter  (0) 2024.09.04
[JAVA] import 문  (0) 2024.09.04
[JAVA] 패키지  (0) 2024.09.04
[JAVA] final 필드와 상수  (0) 2024.09.04