class(C# 참조)

클래스는 다음 예제와 같이 class 키워드를 사용하여 선언합니다.

      class TestClass
{
    // Methods, properties, fields, events, delegates 
    // and nested classes go here.
}

설명

C++와 달리 C#에서는 단일 상속만 가능합니다. 즉, 클래스는 하나의 기본 클래스에서만 구현을 상속할 수 있습니다. 그러나 클래스는 인터페이스를 두 개 이상 구현할 수 있습니다. 다음 표에는 클래스 상속 및 인터페이스 구현 예제가 나와 있습니다.

상속 예제

없음

class ClassA { }

Single

class DerivedClass: BaseClass { }

없음, 두 개의 인터페이스 구현

class ImplClass: IFace1, IFace2 { }

단일, 한 개의 인터페이스 구현

class ImplDerivedClass: BaseClass, IFace1 { }

중첩 클래스에서는 protectedprivate 액세스 수준만 사용할 수 있습니다.

형식 매개 변수가 있는 제네릭 클래스를 선언할 수도 있습니다. 자세한 내용은 제네릭 클래스를 참조하십시오.

클래스에는 다음과 같은 멤버 선언이 포함될 수 있습니다.

예제

다음 예제에서는 클래스의 필드, 생성자 및 메서드 선언을 보여 줍니다. 또한 개체를 인스턴스화하는 것과 인스턴스 데이터를 출력하는 것을 보여 줍니다. 이 예제에서는 두 개의 클래스를 선언합니다. 첫째 클래스인 Kid 클래스에는 두 개의 private 필드(nameage)와 두 개의 public 메서드가 있습니다. 두 번째 클래스인 MainClassMain을 포함하는 데 사용됩니다.

// keyword_class.cs
// class example
using System;
class Kid
{
    private int age;
    private string name;

    // Default constructor:
    public Kid()
    {
        name = "N/A";
    }

    // Constructor:
    public Kid(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // Printing method:
    public void PrintKid()
    {
        Console.WriteLine("{0}, {1} years old.", name, age);
    }
}

class MainClass
{
    static void Main()
    {
        // Create objects
        // Objects must be created using the new operator:
        Kid kid1 = new Kid("Craig", 11);
        Kid kid2 = new Kid("Sally", 10);

        // Create an object using the default constructor:
        Kid kid3 = new Kid();

        // Display results:
        Console.Write("Kid #1: ");
        kid1.PrintKid();
        Console.Write("Kid #2: ");
        kid2.PrintKid();
        Console.Write("Kid #3: ");
        kid3.PrintKid();
    }
}

출력

Kid #1: Craig, 11 years old.
Kid #2: Sally, 10 years old.
Kid #3: N/A, 0 years old.

설명

앞의 예제에서 private 필드(nameage)는 Kid 클래스의 public 메서드를 통해서만 액세스할 수 있습니다. 예를 들어, 다음 문을 사용하여 Main 메서드에서 kid 이름을 출력할 수 없습니다.

Console.Write(kid1.name);   // Error

Main에서 Kid의 private 멤버에 액세스하려면 Main이 이 클래스의 멤버여야 합니다.

액세스 한정자를 사용하지 않고 클래스 내에서 선언한 형식은 기본적으로 private이므로 이 예제에서 데이터 멤버는 키워드를 제거하지 않은 경우 여전히 private입니다.

또한 기본 생성자를 사용하여 생성한 개체(kid3)의 age 필드는 기본적으로 0으로 초기화됩니다.

C# 언어 사양

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 1.6 클래스 및 개체

  • 3.4.4 클래스 멤버

  • 4.2.1 클래스 형식

  • 10 클래스

참고 항목

참조

C# 키워드
참조 형식(C# 참조)

개념

C# 프로그래밍 가이드

기타 리소스

C# 참조