C# 클래스의 접근 제한자

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#의 중요한 특징 중 하나로, 객체 지향 프로그래밍의 핵심 원칙을 실현하는 데 필수적입니다. 클래스와 클래스의 멤버를 설계할 때는 항상 적절한 접근 제한자를 사용하여 코드의 안정성과 유지보수성을 높이는 것이 중요합니다.

참고자료

함께 보면 좋은 이전 게시글

위로 스크롤