C#에서 protected 접근 한정자는 파생 클래스(자식 클래스)가 기반 클래스(부모 클래스)의 멤버 변수와 멤버 함수에 접근할 수 있도록 허용하는 역할을 합니다. 이러한 특성 덕분에 상속(inheritance)을 효과적으로 구현할 수 있으며, 상속에 대한 자세한 내용은 상속 챕터에서 더 깊이 다루게 됩니다.
protected 멤버 변수 선언 예제
다음은 클래스 A 내부에 protected로 멤버 변수를 선언한 간단한 예제입니다.
class A {
protected int a2 = 87;
}이렇게 선언된 변수는 외부에서는 직접 접근할 수 없지만, 클래스 A를 상속받은 파생 클래스에서는 자유롭게 사용할 수 있습니다.
파생 클래스에서의 접근
아래 예제처럼 클래스 B가 클래스 A를 상속받으면, 파생 클래스 객체를 통해 protected 멤버 변수 a2에 접근하고 값을 변경하는 것이 정상적으로 동작합니다.
using System;
class A {
protected int a2 = 87;
}
class B : A {
static void Main() {
A a = new A();
B b = new B();
b.a2 = 10; // 파생 클래스에서 protected 멤버 접근 가능
}
}핵심 정리
protected 멤버는 동일 클래스 내부와 그 클래스를 상속받은 파생 클래스 안에서만 접근이 허용됩니다. 반면, 위 코드의 객체 a처럼 기반 클래스 타입의 인스턴스를 통해 외부에서 직접 접근하려고 하면 컴파일 오류가 발생한다는 점에 유의해야 합니다. 즉, protected는 '상속 관계에 있는 클래스 간의 데이터 공유'를 위해 설계된 접근 수준이라고 이해하면 됩니다.