개발공부/JAVA
[JAVA] 접근 제한자(Access Modifier)
jnnjnn
2024. 3. 6. 15:40
1. 캡슐화
객체 지향 프로그램의 특징 중 하나로는 캡슐화가 있다. 캡슐화는 내부의 클래스 멤버들를 외부로부터 보호하며 필요한 기능만을 외부에 노출시키는 것이다. 이러한 기능을 구현하기 위한 것이 접근 제한자이다.
2. 접근 제한자
접근 제한자란 클래스, 또는 클래스 멤버의 사용 범위를 제한할 수 있도록 한다. 접근 제한자에는 public, protected, default, private가 있다. 이 중 public이 가장 접근 범위가 넓으며 private가 가장 접근 범위가 좁다.
접근 제한자 | 제한 대상 | 제한 범위 |
public | 클래스, 필드, 생성자, 메소드 | 없음 |
protected | 필드, 생성자, 메소드 | 같은 패키지이거나 자식 객체만 사용 가능 |
default | 클래스, 필드, 생성자, 메소드 | 같은 패키지에서만 사용 가능 |
private | 필드, 생성자, 메소드 | 객체 내부에서만 사용 가능 |
클래스는 public과 default 두가지의 접근 제한자를 가질 수 있다. 아무 접근 제한자를 붙이지 않고 클래스를 선언하면 클래스는 자동으로 default 접근 제한자를 가진다. 또, public은 파일 하나당 하나의 public 클래스만 가질 수 있다.
3. 예시
package package1 // 첫번째 패키지
public class Car{ // 모든 패키지에서만 사용 가능
private int speed; // 객체 내부에서만 사용 가능
void setSpeed(speed){ // default 접근 제한자 : 같은 패키지 내에서만 사용 가능
this.speed = speed;
}
}
package package1 // 첫번째 패키지
public class CarExample{
public static void main(String[] args) {
Car myCar = new Car();
// myCar.speed = 50; 불가능
myCar.setSpeed(50); // 가능
}
}
package package2 // 두번째 패키지
public static void main(String[] args) {
Car yourCar = new Car(); // 가능
// yourCar.speed = 50; 불가능
// yourCar.setSpeed(50); 불가능
}
}