Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# private 메서드와 sealed 메서드 완벽 정리

private 메서드란?

C#에서 클래스 내부의 메서드를 외부에 노출하지 않으려면 private 접근 한정자를 사용합니다.

private 접근 한정자를 지정하면 해당 클래스의 멤버 변수와 멤버 함수가 다른 함수나 객체로부터 숨겨집니다. 오직 같은 클래스 내부의 함수만 private 멤버에 접근할 수 있으며, 심지어 그 클래스의 인스턴스조차 private 멤버에는 직접 접근할 수 없습니다.

이러한 특성 덕분에 private은 클래스의 내부 구현 세부사항을 캡슐화하고, 외부에서 잘못된 방식으로 데이터가 변경되는 것을 방지하는 데 유용합니다.

sealed(봉인) 메서드란?

C#에서 'final' 메서드에 해당하는 개념은 sealed 한정자입니다.

메서드에 sealed 한정자를 적용하면 해당 메서드는 더 이상 파생 클래스에서 재정의(override)될 수 없습니다. 단, 주의할 점이 있습니다. sealed 메서드는 반드시 파생 클래스의 일부여야 하며, 기존에 override된 메서드에만 사용할 수 있습니다.

즉, sealed는 virtual 메서드의 재정의 체인을 특정 지점에서 끊고 싶을 때 사용하는 한정자입니다.

예제 코드

다음 예제를 살펴보겠습니다.

class ClassOne {
    public virtual void display() {
        Console.WriteLine("baseclass");
    }
}

class ClassTwo : ClassOne {
    public sealed override void display() {
        Console.WriteLine("ClassTwo: DerivedClass");
    }
}

class ClassThree : ClassTwo {
    public override void display() {
        Console.WriteLine("ClassThree: Another Derived Class");
    }
}

위 코드에서 ClassOne은 기본 클래스이고, ClassTwo와 ClassThree는 이를 상속하는 파생 클래스입니다.

ClassTwo의 display() 메서드에는 sealed 한정자가 붙어 있기 때문에, ClassThree에서 display() 메서드를 다시 재정의하려고 하면 컴파일 오류가 발생합니다. sealed로 봉인된 메서드는 더 이상 하위 클래스에서 재정의하는 것이 허용되지 않기 때문입니다.

정리

private은 클래스 외부로부터 멤버를 숨기는 접근 제어 도구이고, sealed는 상속 계층 구조에서 메서드의 재정의를 차단하는 도구입니다. 두 한정자를 적절히 활용하면 코드의 안정성과 캡슐화 수준을 크게 높일 수 있습니다.