public 접근 한정자(access specifier)는 클래스가 자신의 멤버 변수와 멤버 함수를 다른 함수나 객체에 공개할 수 있도록 허용합니다. 즉, public으로 선언된 모든 멤버는 클래스 외부에서 자유롭게 접근할 수 있습니다.
public 멤버 변수의 특징
아래 예제에서는 length와 width 변수를 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 클래스에 속하지만, length와 width가 public으로 선언되어 있기 때문에 인스턴스 r를 통해 직접 접근하여 값을 설정할 수 있습니다.
참고로, 만약 이 변수들이 private으로 선언되었다면 클래스 외부에서 접근하려고 할 때 컴파일 오류가 발생합니다. 따라서 실무에서는 캡슐화(encapsulation) 원칙에 따라 멤버 변수를 private으로 보호하고, public 프로퍼티(property)나 메서드를 통해 간접적으로 접근하도록 설계하는 것이 일반적입니다.