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

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

public 접근 한정자(access specifier)는 클래스가 자신의 멤버 변수와 멤버 함수를 다른 함수나 객체에 공개할 수 있도록 허용합니다. 즉, public으로 선언된 모든 멤버는 클래스 외부에서 자유롭게 접근할 수 있습니다.

public 멤버 변수의 특징

아래 예제에서는 lengthwidth 변수를 public으로 선언했습니다. 덕분에 이 변수들은 클래스 내부뿐만 아니라 클래스 외부의 코드에서도 접근하고 값을 변경할 수 있습니다.

클래스 외부에서 public 멤버에 접근하려면 해당 클래스의 인스턴스(객체)를 생성한 뒤, 점(.) 연산자를 사용하면 됩니다.

Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;

전체 예제 코드

다음은 위 내용을 포함한 완전한 C# 프로그램입니다.

using System;
namespace RectangleApplication {
    class Rectangle {
        // 멤버 변수
        public double length;
        public double width;
        
        public double GetArea() {
            return length * width;
        }
        
        public void Display() {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    } // Rectangle 클래스 끝
    
    class ExecuteRectangle {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.length = 4.5;   // 클래스 외부에서 public 멤버 변수에 접근
            r.width = 3.5;    // 클래스 외부에서 public 멤버 변수에 접근
            r.Display();
            Console.ReadLine();
        }
    }
}

실행 결과

Length: 4.5
Width: 3.5
Area: 15.75

Main() 메서드는 Rectangle 클래스 외부에 있는 ExecuteRectangle 클래스에 속하지만, lengthwidthpublic으로 선언되어 있기 때문에 인스턴스 r를 통해 직접 접근하여 값을 설정할 수 있습니다.

참고로, 만약 이 변수들이 private으로 선언되었다면 클래스 외부에서 접근하려고 할 때 컴파일 오류가 발생합니다. 따라서 실무에서는 캡슐화(encapsulation) 원칙에 따라 멤버 변수를 private으로 보호하고, public 프로퍼티(property)나 메서드를 통해 간접적으로 접근하도록 설계하는 것이 일반적입니다.