본문 바로가기
Program Language/C#

Part2. C# 기초 다지기(10. 클래스의 구성)

by 토담이아빠 2023. 2. 24.

클래스의 구성

 

C# 클래스는 필드, 속성, 메서드, 생성자, 이벤트 등의 다양한 구성 요소를 가질 수 있습니다. 이번 포스팅에서는 C#클래스의 구성에 대해서 정리했습니다.


필드(Fields)

 

필드는 클래스에서 사용할 데이터를 저장하는 데 사용됩니다. 필드는 다른 클래스 멤버에서 사용될 수 있으며, 클래스의 인스턴스를 생성할 때 초기화됩니다.


class MyClass
{
    int myField;
}

속성(Properties)

 

속성은 클래스의 필드 값을 가져오거나 설정하기 위한 메커니즘을 제공합니다. 속성은 필드를 캡슐화하여 외부에서 직접 필드 값을 변경하지 못하도록 합니다.


class MyClass
{
    private int myField;

    public int MyProperty
    {
        get { return myField; }
        set { myField = value; }
    }
}

메서드(Methods)

 

메서드는 클래스에서 수행할 수 있는 작업을 나타냅니다. 메서드는 일련의 문장으로 구성되며, 클래스의 인스턴스를 사용하여 호출됩니다.


class MyClass
{
    void MyMethod()
    {
        // 메서드 내용
    }
}

생성자(Constructors)

 

생성자는 클래스의 인스턴스가 생성될 때 호출되는 특별한 메서드입니다. 생성자는 클래스의 필드를 초기화하거나 클래스 인스턴스를 사용하기 전에 필요한 작업을 수행할 수 있습니다.


class MyClass
{
    public MyClass(int myValue)
    {
        myField = myValue;
    }
}

이벤트(Events)

 

이벤트는 클래스에서 발생하는 특정 동작을 다른 클래스에서 수신할 수 있도록 하는 메커니즘을 제공합니다. 이벤트는 일반적으로 이벤트 처리기라고 불리는 메서드와 연결됩니다.


class MyClass
{
    public delegate void MyEventHandler();

    public event MyEventHandler MyEvent;

    public void OnMyEvent()
    {
        MyEvent?.Invoke();
    }
}

중첩 클래스(Nested Classes)

 

중첩 클래스는 클래스 내부에 선언된 클래스입니다. 중첩 클래스는 외부 클래스와 동일한 범위를 가지며, 외부 클래스의 모든 멤버에 접근할 수 있습니다.


class MyClass
{
    public class MyNestedClass
    {
        void MyNestedMethod()
        {
            // 중첩 클래스 내용
        }
    }
}

중첩 구조체(Nested Structs)

 

중첩 구조체는 클래스 내부에 선언된 구조체입니다. 중첩 구조체는 외부 클래스와 동일한 범위를 가지며, 외부 클래스의 모든 멤버에 접근할 수 있습니다.


class MyClass
{
    public struct MyNestedStruct
    {
        void MyNestedMethod()
        {
            // 중첩 구조체 내용
        }
    }
}

인덱서(Indexers)

 

인덱서는 객체의 요소에 접근하는 데 사용되는 특별한 속성입니다. 인덱서는 객체 내의 배열과 유사한 방식으로 작동하며, 객체의 요소에 대한 값을 반환하거나 설정합니다.


class MyClass
{
    private int[] myArray = new int[10];

    public int this[int index]
    {
        get { return myArray[index]; }
        set { myArray[index] = value; }
    }
}

위의 예제에서 MyClass에는 myArray라는 배열 필드가 있으며, this 인덱서를 사용하여 배열 요소에 접근할 수 있습니다.

 

정적 멤버(Static Members)

 

정적 멤버는 클래스 인스턴스 없이 호출할 수 있는 멤버입니다. 정적 멤버는 static 키워드를 사용하여 정의됩니다. 정적 필드, 메서드, 이벤트, 속성 등이 있습니다.


class MyClass
{
    public static int myStaticField;

    public static void MyStaticMethod()
    {
        // 정적 메서드 내용
    }

    public static event EventHandler MyStaticEvent;

    public static int MyStaticProperty
    {
        get { return myStaticField; }
        set { myStaticField = value; }
    }
}

위의 예제에서 myStaticField, MyStaticMethod, MyStaticEvent, MyStaticProperty는 모두 static 키워드로 정의된 정적 멤버입니다. 이러한 멤버는 클래스 인스턴스 없이 호출할 수 있으며, MyClass.myStaticField, MyClass.MyStaticMethod()와 같은 형식으로 호출됩니다.

 

C# 클래스는 이러한 다양한 멤버를 사용하여 객체의 동작을 정의하고 확장할 수 있습니다. 클래스 멤버는 객체지향 프로그래밍의 기본 개념인 캡슐화, 상속, 다형성 등을 구현하는 데 사용됩니다.

 

 

댓글