: 제어자는 클래스
, 변수
, 메서드
의 선언부에 사용되어 부가적인 의미를 부여해 줌
하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나,
접슨 제어자는 단 하나만 사용할 수 있다.
접근 제어자
public
,protected
,default
,private
그 외 제어자
static
,final
,abstract
: 접근을 어디까지 허용할 것인가!
멤버 또는 클래스에 사용하고 외부에서 접근하지 못하도록 제한함
public
: 접근 제한이 전혀 없음protected
: 같은 패키지 내에서 다른 패키지의 자손 클래스에서 접근 가능default
: 같은 패키지 내에서만 접근 가능private
: 같은 클래스 내에서만 접근 가능 (보수적)public
, default
public
, protected
, default
, private
객체의 무결성, 변경이 없는 상태를 유지하기 위해 접근 제어자를 사용함
default
, private
등의 접근 제어자를 사용할 수 있음private
필드를 읽거나 저장할 수 있을까?: 직접적인 값의 조회와 세팅을 방지하기 위해 사용
외부에서 객체의 private
한 필드(class 내부)를 읽을 필요가 있을 때 Getter 메서드를 사용함
private double speed; // 자동차 속도 km/h
private char gear = 'P'; // 기어의 상태 P R N D
private boolean lights; // 자동차 조명 상태
private
접근 제어자로 지정한 필드가 있을 때 Getter 메서드를 통해 값을 가져올 수 있음public String getModel(){
return model;
}
public String getColor(){
return color;
}
public String getPrice(){
return price;
}
get + 필드이름(첫 글자 대문자: 카멜케이스)
외부에서 객체의 private
한 필드를 저장/수정할 필요가 있을 때 Setter 메서드를 사용함
private double speed; // 자동차 속도 km/h
private char gear = 'P'; // 기어의 상태 P R N D
private boolean lights; // 자동차 조명 상태
private
접근 제어자로 지정한 필드가 있을 때 Setter 메서드를 통해 값을 저장하거나 수정할 수 있음public void setModel(String model){
this.model = model;
}
public void setColor(String color){
this.model = color;
}
public void setPrice(String price){
this.model = price;
}
set + 필드이름(첫 글자 대문자 : 카멜케이스)
사용가능한 제어자
- 클래스 :
public
,default
,final
,abstract
- 메서드 :
public
,default
,final
,abstract
,protected
,static
,private
- 멤버변수 :
public
,default
,final
,protected
,private
,static
- 지역변수 :
final
static
과 abstract
를 함께 사용할 수 없음abstract
와 final
을 동시에 사용할 수 없음abstract
메서드의 접근 제어자가 private
일 수 없음private
와 final
을 같이 사용할 필요는 없음