Language/Java
[JAVA] 접근제한자(Access Modifier)
HONGNEW
2019. 10. 6. 14:14
지난 포스팅에서 Class내에 선언한 값을 외부에서 직접 접근할 수 없게 하기 위해서 private라는 접근제한자를 지정했습니다. 오늘은 접근제한자의 역할과 종류에 대해서 알아보겠습니다.
접근제한자란 말 그대로 접근을 제한하는 기능을 합니다. 접근제한자의 종류는 다음과 같습니다.
접근제한자(Access Modifier) | 역할(접근 가능 범위) | 비고 |
Public | 어디서나 누구나 접근 가능 | 클래스, 변수, 생성자, 메소드에 적용 가능 |
Protected |
같은 패키지 내에서 접근 가능 또는, 상속관계에 있는 경우 접근 가능 |
변수, 생성자, 메소드에 적용 가능 |
(생략) | 같은 패키지 내에서만 접근 가능 | 클래스, 변수, 생성자, 메소드에 적용 가능 |
Private | 같은 클래스 내에서만 접근 가능 | 변수, 생성자, 메소드에 적용 가능 |
위 표의 내용을 바탕으로 지난 포스팅에서의 Car Class를 다시 보면,
ublic class Car {
private int price; // private: 외부에서 접근 불가
private String color;
public void drive(int speed) {
System.out.println(speed + "km/h 로 주행합니다.");
}
public void stop() {
System.out.println("주행을 멈춥니다.");
}
public int getPrice() { // price변수 값 불러오기
return price;
}
public void setPrice(int price) { // price변수에 값 할당하기
if (price >= 0 && price < 500) {
this.price = price;
}
}
public String getColor() { //color변수 값 불러오기
return color + "color";
}
public void setColor(String color) { //color변수에 값 할당하기
this.color = color;
}
}
외부의 다른 클래스에서 Car 클래스에 접근할때, private를 접근제한자로 가지고있는 price와 color변수에는 접근할 수 없는 것입니다. 반면 drive, stop메소드와 getter/setter메소드들은 접근제한자를 public으로 지정했기 때문에 외부의 클래스 또는 다른 패키지에서도 접근할 수 있습니다.