이번 글에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심 요소 중 '클래스, 필드와 메소드 접근 지정자'에 대해 깊이 있게 다루겠습니다. 이전에는 this와 super 키워드 및 상위 클래스에서 기본 생성자 구현에 대해 살펴봤지만, 이번 글에서는 클래스와 그 멤버들인 필드와 메소드의 접근 지정자를 어떻게 활용하는지 등에 대해 심화된 내용과 실제 사례를 통해 설명하겠습니다.
1. 클래스, 필드와 메소드 접근 지정자란 무엇인가?
객체 지향 프로그래밍에서 '접근 지정자(Access Modifier)'란 클래스나 그 멤버(필드 또는 메소드)의 접근 범위를 제한하는 역할을 합니다. Java에서는 private, default(package-private), protected, public 총 네 가지의 접근 지정자를 제공합니다.
- Private: 해당 멤버는 같은 클래스 내부에서만 액세스 가능합니다.
- Default(Package-private): 해당 멤버는 같은 패키지 내의 다른 클래스들로부터 액세스 가능합니다.
- Protected: 해당 멤버는 같은 패키지 내 혹은 다른 패키지의 하위 클래스로부터 액세스 가능합니다.
- Public: 해당 멤버는 어디서든 액세스 가능합니다.
2. 왜 접근 지정자를 사용하는가?
접근 지정자를 사용함으로써 데이터 은닉(Data Hiding)과 캡슐화(Encapsulation)라는 중요한 객체지향 원칙을 따르게 됩니다. 이 원칙들은 외부로부터 데이터나 내부 동작 방식을 숨기고 안전하게 보호함으로써 코드의 유지보수성과 재사용성을 높입니다.
3. 접근 지정자 활용하기
Java 언어 기준으로 Person이라는 클래스가 있다고 가정하겠습니다.
예시 코드:
public class Person {
// Private field
private String name;
// Public method
public void setName(String name) {
this.name = name;
}
// Public method
public String getName() {
return this.name;
}
}
위 예제에서 Person 클래스의 name 필드는 private로 선언되어 있어서 같은 클래스 내부에서만 직접적으로 액세스할 수 있습니다. 하지만 setName()과 getName()이라는 public 메소드를 통해서 간접적으로 액세스할 수 있습니다. 이렇게 함으로써 외부에서 직접적으로 name 필드에 접근하여 값을 변경하는 것을 막고, 메소드를 통해 제한된 방식으로만 값을 변경하거나 조회하도록 함으로써 데이터의 안정성을 보장합니다.
4. 주의사항
잘못된 사용 혹은 과도한 제한은 예상치 못한 결과나 복잡성을 초래할 수 있습니다. 따라서 접근 지정자를 적절하게 사용하는 것이 중요합니다. 특히 private 접근 지정자는 데이터 은닉을 위해 널리 사용되지만, 과도하게 사용되면 다른 클래스와의 상호작용이 어려워져 코드의 유연성이 떨어질 수 있으므로 주의가 필요합니다.
5. 결론
객체 지향 프로그래밍에서 '클래스, 필드와 메소드 접근 지정자'는 중요한 개념입니다. 이 개념을 이해하고 활용하면 데이터 은닉과 캡슐화를 통해 코드의 안정성과 유지 보수성을 높일 수 있습니다.
그러나 이러한 도구들을 사용할 때에도 주의사항이 존재합니다. 항상 올바른 방법과 위치에서 접근 지정자를 사용하는 것이 중요합니다.
'Programming > 객체 지향 프로그래밍(OOP)' 카테고리의 다른 글
OOP 활용: 업캐스팅(다형성) (0) | 2023.10.02 |
---|---|
OOP 활용: 상속관계(다형성) (0) | 2023.10.01 |
OOP 활용: this와 super, 상위 클래스에서 기본 생성자 구현(상속) (0) | 2023.09.29 |
OOP 활용: 상위 클래스의 필드와 메소드 상속(상속) (0) | 2023.09.28 |
OOP 활용: extends 키워드(상속) (0) | 2023.09.27 |