개발계발
접근 제한자 본문
경우에 따라서 객체의 필드를 외부에서 변경하거나 메소드를 호출할 수 없도록 막야한다.
이런 경우를 위해서 자바에서는 public, protected, private라는 접근 제한자를 제공한다.
접근 제한자 | 제한 대상 | 제한 범위 |
public | 클래스, 필드, 생성자, 메서드 | 없음 |
protected | 필드, 생성자, 메소드 | 같은 패키지, 자식 객체만 사용 가능 |
(default) | 클래스, 필드, 생성자, 메소드 | 같은 패키지 |
private | 필드, 생성자, 메소드 | 객체 내부 |
클래스의 접근 제한
클래스는 public과 default 접근 제한을 가질 수 있다.
클래스 작성 시 기본적으로 public 키워드를 많이 사용하는 데, 생략할 경우 default 접근 제한을 가지게 된다.
default의 경우, 같은 패키지에서만 사용가능하게 된다.
생성자의 접근 제한
생성자는 public, default, private 접근 제한을 가질 수 있다.
public : 모든 패키지에서 생성자 호출 가능(객체 생성 가능)
default : 같은 패키지에서만 생성자 호출 가능
private : 클래스 내부에서만 생성자 호출 가능
필드와 메소드의 접근 제한
필드와 메소드도 생성자와 동일하게 public, default, private 접근 제한을 가질 수 있다.
public : 모든 패키지에서 필드를 읽고 변경 / 메소드를 호출할 수 있다.
default : 같은 패키지에서만 필드를 읽고 변경 / 메소드를 호출할 수 있다.
private : 클래스 내부에서만 필드를 읽고 변경 / 메소드를 호출할 수 있다.
결론
클래스만 [public, default] (private 사용불가, private는 "클래스 내부에서만"인데, 클래스를 클래스 내부에서? 말이 안됨)
생성자, 필드, 메소드는 [public, default, private] 가능
가장 상단에 잠깐 언급했던 protected 접근 제한자는 이후 상속 포스팅에서 다룰 예정.
'자바' 카테고리의 다른 글
추상 클래스와 봉인 클래스 (0) | 2024.04.26 |
---|---|
상속 (1) | 2024.04.26 |
final 키워드 (0) | 2024.04.26 |
인스턴스 멤버와 정적 멤버 (0) | 2024.04.26 |
객체 지향 프로그래밍 (0) | 2024.04.26 |