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

C#에서 클래스 private 멤버 변수의 범위란?

C#에서 private으로 선언된 멤버 변수와 멤버 함수는 오직 같은 클래스 내부의 함수만 접근할 수 있습니다. 즉, private 접근 한정자(access specifier)를 사용하면 클래스가 자신의 멤버 변수와 멤버 함수를 외부의 다른 함수나 객체로부터 숨겨 캡슐화(encapsulation)를 실현할 수 있습니다.

이러한 정보 은닉(data hiding) 기법은 객체 지향 프로그래밍에서 매우 중요한 개념입니다. 외부에서 내부 데이터에 직접 접근하지 못하도록 막음으로써, 잘못된 값이 할당되는 것을 방지하고 데이터의 무결성을 보호할 수 있습니다.

예제 코드

using System;
namespace RectangleApplication {
    class Rectangle {
        // 멤버 변수
        private double length;
        private double width;
        public void Acceptdetails() {
            length = 10;
            width = 14;
        }
        public double GetArea() {
            return length * width;
        }
        public void Display() {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    } //end class Rectangle
    class ExecuteRectangle {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.Acceptdetails();
            r.Display();
            Console.ReadLine();
        }
    }
}

실행 결과

Length: 10
Width: 14
Area: 140

코드 설명

위 예제에서 lengthwidth 변수는 private으로 선언되었기 때문에, 같은 클래스(Rectangle)에 속한 메서드인 Acceptdetails(), GetArea(), Display()만이 이들 변수에 접근할 수 있습니다.

반면, Main() 메서드가 있는 ExecuteRectangle 클래스에서는 r.length = 20;과 같이 직접 값을 할당하려 하면 컴파일 오류가 발생합니다. 대신 public으로 선언된 Acceptdetails() 메서드를 호출하여 간접적으로 값을 설정해야 합니다.

private 사용 시 주요 장점

  • 데이터 보호: 외부 코드가 임의로 멤버 변수를 변경하는 것을 차단합니다.
  • 캡슐화 강화: 클래스 내부 구현 세부 사항을 숨기고, 공개 인터페이스(public 메서드)를 통해서만 상호작용하게 만듭니다.
  • 유지보수성 향상: 내부 구현을 변경해도 외부 코드에 영향을 주지 않으므로 코드 수정이 용이합니다.

참고로, C#에서는 클래스 멤버에 별도의 접근 한정자를 지정하지 않으면 기본적으로 private으로 처리됩니다.