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

C# 클래스의 멤버 변수란? 개념부터 예제까지 쉽게 이해하기

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

정리

위 예제에서 lengthwidthprivate으로 선언된 멤버 변수입니다. 외부 클래스인 ExecuteRectangle에서는 이 변수들에 직접 접근할 수 없고, Acceptdetails(), GetArea(), Display() 같은 public 메서드를 통해서만 값을 설정하거나 조회할 수 있습니다.

이것이 바로 C# 객체지향 프로그래밍에서 멤버 변수와 캡슐화가 동작하는 방식입니다. 멤버 변수를 활용하면 각 객체가 자신만의 상태를 유지하면서도, 안전하게 데이터를 관리할 수 있습니다.