접근 제어자
제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여
-
클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default
- public : 접근 제한이 전혀 없음
- protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능
- default : 같은 패키지 내에서만 접근이 가능
- private : 같은 클래스 내에서만 접근이 가능
-
사용 가능한 접근 제어자
- 클래스 : public, default
- 메서드 & 멤버변수 : public, protected, default, private
- 지역변수 : X
-
접근 제어자를 이용한 캡슐화
- protected를 이용해서 내부의 데이터를 보호한다.
-
생성자의 접근 제어자
- 생성자에 접근 제어자를 사용 -> 인스턴스 생성 제한
일반적으로 생성자의 접근제어자는 클래스의 접근 제어자와 일치
-
Getter와 Setter
객체의 무결성, 변경이 없는 상태를 유지하기 위해 사용
외부에서 필드 접근 막기위해 private, default와 같은 접근 제어자 사용 -> private 필드를 읽어오는 일이 필요하면?
=> Getter와 Setter을 이용해서 해결 가능
Getter 외부에서 객체의 private 필드 읽을 필요 있을 때 Getter 메서드 사용
-
사용 가능한 제어자 조합
- 클래스 : public, default, final, abstract
- 메서드 : public, protected, default, private, final, abstract, static
- 멤버변수 : public, protected, default, private, final, static
- 지역변수 : final
-
주의 사항
- 메서드에 static과 abstract를 함께 사용 불능
- 클래스에 abstract와 final을 동시에 사용 불능
- abstract메서드의 접근 제어자가 private 불가
- 메서드에 private와 final을 같이 사용할 필요 없음