C# 클래스의 접근 제한자
접근 제한자는 클래스 및 클래스의 멤버(속성, 메서드 등)의 가시성을 제어합니다. 이를 통해 코드의 안정성을 유지하고 데이터 은닉, 캡슐화 등의 객체 지향 프로그래밍의 핵심 원칙을 실현할 수 있습니다. 이번 글에서는 C#에서 사용되는 주요 접근 제한자와 그 활용 방법에 대해 알아보겠습니다.
1. 접근 제한자의 종류
C#에서는 여러 가지 접근 제한자를 제공합니다. 각 접근 제한자는 멤버의 가시성을 다르게 제어하므로 상황에 맞게 적절하게 사용해야 합니다.
1.1 public
`public` 접근 제한자는 해당 멤버가 어디서든 접근 가능하다는 것을 나타냅니다.
public class SampleClass
{
public int MyPublicVariable = 0; // 어디서든 접근 가능
}
1.2 private
`private` 접근 제한자는 해당 멤버가 그 클래스 내에서만 접근 가능하다는 것을 나타냅니다.
class SampleClass
{
private int MyPrivateVariable = 0; // 해당 클래스 내에서만 접근 가능
}
1.3 protected
`protected` 접근 제한자는 해당 클래스 및 해당 클래스를 상속받은 파생 클래스 내에서만 접근 가능하다는 것을 나타냅니다.
class BaseClass
{
protected int MyProtectedVariable = 0; // 해당 클래스 및 파생 클래스에서 접근 가능
}
class DerivedClass : BaseClass
{
public int AccessBaseVariable()
{
return MyProtectedVariable; // 파생 클래스에서 접근 가능
}
}
2. 접근 제한자의 활용
접근 제한자는 코드의 안정성을 보장하고, 데이터 은닉을 통해 객체의 상태를 적절하게 유지하도록 돕습니다. 예를 들어, 클래스의 내부 상태를 변경할 수 있는 멤버 변수는 외부에서 직접 접근하는 것을 피하고, 해당 변수를 조작하는 메서드를 통해서만 접근하도록 설계하는 것이 좋습니다.
class EncapsulatedClass
{
private int encapsulatedValue = 0;
// 외부에서 이 메서드를 통해 값 설정
public void SetValue(int value)
{
if(value >= 0)
{
encapsulatedValue = value;
}
}
// 외부에서 이 메서드를 통해 값 조회
public int GetValue()
{
return encapsulatedValue;
}
}
이렇게 설계함으로써, `encapsulatedValue`는 유효한 값만 가지게 되어 클래스의 상태와 행동의 일관성을 보장할 수 있습니다.
결론
접근 제한자는 C#의 중요한 특징 중 하나로, 객체 지향 프로그래밍의 핵심 원칙을 실현하는 데 필수적입니다. 클래스와 클래스의 멤버를 설계할 때는 항상 적절한 접근 제한자를 사용하여 코드의 안정성과 유지보수성을 높이는 것이 중요합니다.
참고자료
- Microsoft 공식 문서: 클래스 (C# 프로그래밍 가이드)
함께 보면 좋은 이전 게시글
- C# 클래스 정의하기: 멤버 변수, 속성, 생성자, 메서드 소개
- C# 객체 생성 및 활용: 초기화부터 가비지 컬렉션까지
- C# 함수/메소드 기본 개념 및 작성 방법
- C# 메서드 오버로딩의 기본 개념 및 사용 예제
- C# 확장 메서드 활용 및 사용 예제
이 글이 도움이 되셨다면 공유 부탁 드립니다.