C#에서 클래스(class)는 객체를 만들기 위한 설계도 역할을 하며, 그 안에는 멤버 변수(member variables)와 멤버 함수(member functions)가 포함됩니다. 이러한 구성 요소들은 객체의 상태와 동작(behavior)을 정의합니다.
클래스의 기본 문법
멤버 변수가 무엇인지 이해하기 위해 먼저 클래스의 일반적인 문법 구조를 살펴보겠습니다.
<접근 지정자> class class_name {
// 멤버 변수
<접근 지정자> <데이터 타입> variable1;
<접근 지정자> <데이터 타입> variable2;
...
<접근 지정자> <데이터 타입> variableN;
// 멤버 메서드
<접근 지정자> <반환 타입> method1(parameter_list) {
// 메서드 본문
}
<접근 지정자> <반환 타입> method2(parameter_list) {
// 메서드 본문
}
...
}멤버 변수의 특징과 캡슐화
멤버 변수는 설계 관점에서 객체의 속성(attribute)에 해당합니다. C#에서는 캡슐화(encapsulation)를 구현하기 위해 멤버 변수를 private으로 선언하는 것이 일반적입니다.
이렇게 private으로 선언된 변수는 외부에서 직접 접근할 수 없으며, 오직 public으로 선언된 멤버 함수를 통해서만 접근하고 조작할 수 있습니다. 이러한 방식은 데이터의 무결성을 보호하고, 클래스 내부 구현이 외부에 노출되지 않도록 합니다.
즉, Rectangle 클래스의 인스턴스가 새로 생성될 때마다 해당 인스턴스마다 고유의 length와 width 변수가 각각 만들어지기 때문에, 이 두 변수는 멤버 변수라고 할 수 있습니다.
예제 코드
다음은 Rectangle(사각형) 클래스를 통해 멤버 변수의 개념을 보여주는 실제 예제입니다.
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());
}
} // Rectangle 클래스 끝
class ExecuteRectangle {
static void Main(string[] args) {
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
실행 결과
Length: 10
Width: 14
Area: 140
정리
위 예제에서 length와 width는 private으로 선언된 멤버 변수입니다. 외부 클래스인 ExecuteRectangle에서는 이 변수들에 직접 접근할 수 없고, Acceptdetails(), GetArea(), Display() 같은 public 메서드를 통해서만 값을 설정하거나 조회할 수 있습니다.
이것이 바로 C# 객체지향 프로그래밍에서 멤버 변수와 캡슐화가 동작하는 방식입니다. 멤버 변수를 활용하면 각 객체가 자신만의 상태를 유지하면서도, 안전하게 데이터를 관리할 수 있습니다.