자바에서 접근 제어자는 클래스, 메서드, 변수의 접근 범위를 설정하는 데 사용된다. 접근 제어자는 주로 캡슐화를 통해 데이터 보호와 코드의 구조화된 관리를 돕는다. 자바에는 네 가지 주요 접근 제어자가 있다: public, protected, default(package-private), private이다.
1. Public
public
접근 제어자는 해당 요소가 모든 클래스에서 접근 가능하다는 것을 의미한다. 다른 패키지에 있는 클래스에서도 접근할 수 있으므로, 공용 API나 라이브러리를 만들 때 유용하다.
public class Example {
public int value;
public void display() {
System.out.println("Value: " + value);
}
}
위 예제에서 Example
클래스와 value
필드는 모두 public
으로 선언되어 있어, 다른 패키지에서도 자유롭게 접근할 수 있다.
2. Protected
protected
접근 제어자는 해당 요소가 같은 패키지 내의 클래스와 상속 관계에 있는 클래스에서 접근 가능하다는 것을 의미한다. 이는 서브클래스가 부모 클래스의 필드와 메서드에 접근할 수 있도록 허용한다.
public class Parent {
protected int value;
protected void display() {
System.out.println("Value: " + value);
}
}
class Child extends Parent {
void show() {
value = 10;
display();
}
}
여기서 Child
클래스는 Parent
클래스의 protected
멤버에 접근할 수 있다.
3. Default (Package-Private)
default
접근 제어자는 아무런 접근 제어자를 명시하지 않은 경우로, 같은 패키지 내의 클래스에서만 접근할 수 있다. 다른 패키지의 클래스는 접근할 수 없다.
class DefaultExample {
int value;
void display() {
System.out.println("Value: " + value);
}
}
위의 DefaultExample
클래스는 같은 패키지 내에서만 접근 가능하며, 다른 패키지에서는 접근할 수 없다.
4. Private
private
접근 제어자는 해당 요소가 정의된 클래스 내에서만 접근 가능하다는 것을 의미한다. 이는 데이터 보호를 극대화하는 방법으로, 클래스 외부에서 해당 멤버에 접근할 수 없도록 한다.
public class PrivateExample {
private int value;
private void display() {
System.out.println("Value: " + value);
}
public void setValue(int value) {
this.value = value;
}
public void show() {
display();
}
}
이 예제에서 value
필드와 display
메서드는 private
로 선언되어 외부에서 직접 접근할 수 없지만, setValue
와 show
메서드를 통해 간접적으로 접근할 수 있다.
결론
자바의 접근 제어자는 코드의 안전성과 유지보수성을 높이는 중요한 요소이다. 적절한 접근 제어자를 사용하여 데이터의 무결성을 유지하고, 클래스 간의 관계를 명확하게 할 수 있다. 각 접근 제어자의 특성을 이해하고 상황에 맞게 활용하는 것이 중요하다.
'Web > TIL' 카테고리의 다른 글
Redis와 캐시의 이해 (0) | 2024.08.18 |
---|---|
[Spring] 스프링부트와 스프링, War 와 Jar의 차이 (0) | 2024.08.13 |
캐시 무효화와 캐시 무효화 전략 (1) | 2024.08.11 |
캐시와 설계 시스템 전략 (0) | 2024.08.11 |
Flyway 데이터베이스 마이그레이션 (0) | 2024.08.11 |