다음을 통해 공유


클래스(C# 참조)

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

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

C#은 단일 상속만 지원합니다. 즉, 클래스는 하나의 기본 클래스에서만 구현을 상속할 수 있습니다. 그러나 클래스는 둘 이상의 인터페이스를 구현할 수 있습니다.

C# 언어 참조는 가장 최근에 릴리스된 C# 언어 버전을 문서화합니다. 또한 예정된 언어 릴리스의 공개 미리 보기 기능에 대한 초기 설명서도 포함되어 있습니다.

설명서는 언어의 마지막 세 버전 또는 현재 공개 미리 보기에서 처음 도입된 기능을 식별합니다.

팁 (조언)

C#에서 기능이 처음 도입된 시기를 찾으려면 C# 언어 버전 기록에 대한 문서를 참조하세요.

클래스, 인터페이스 및 상속에 대한 자세한 내용은 기본 사항 섹션의 상속 에 대한 문서를 참조하세요.

네임스페이스 내에서 직접 클래스를 선언할 수 있습니다. 이러한 클래스를 다른 클래스 내에 중첩하지 마세요. 이러한 클래스를 만들 수 internal있습니다.public 기본적으로 클래스는 .입니다 internal.

중첩 클래스를 포함하여 클래스 멤버를 선언할 수 있습니다(예: public, protected internal, protectedinternal, private또는 private protected.). 기본적으로 멤버는 .입니다 private.

자세한 내용은 액세스 한정자를 참조하세요.

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

클래스는 다음 멤버의 선언을 포함할 수 있습니다.

예시

다음 예제에서는 클래스 필드, 생성자 및 메서드를 선언하는 방법을 보여 줍니다. 또한 개체 인스턴스화 및 인스턴스 데이터 인쇄를 보여 줍니다. 이 예제에서는 두 클래스가 선언됩니다. 첫 번째 클래스 Child는 두 개의 프라이빗 필드(nameage), 두 개의 공용 생성자 및 하나의 public 메서드를 포함합니다. 두 번째 클래스는 StringTest.를 포함합니다.Main

class Child
{
    private int age;
    private string name;

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

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

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

class StringTest
{
    static void Main()
    {
        // Create objects by using the new operator:
        Child child1 = new Child("Craig", 11);
        Child child2 = new Child("Sally", 10);

        // Create an object using the default constructor:
        Child child3 = new Child();

        // Display results:
        Console.Write("Child #1: ");
        child1.PrintChild();
        Console.Write("Child #2: ");
        child2.PrintChild();
        Console.Write("Child #3: ");
        child3.PrintChild();
    }
}
/* Output:
    Child #1: Craig, 11 years old.
    Child #2: Sally, 10 years old.
    Child #3: N/A, 0 years old.
*/

코멘트

클래스의 public 메서드를 통해서만 프라이빗 필드(nameage)에 Child 액세스할 수 있습니다. 예를 들어 다음과 같은 문을 사용하여 메서드에서 Main 자식의 이름을 인쇄할 수 없습니다.

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

클래스의 멤버인 경우에만 Main 원본 MainChild 프라이빗 멤버에 액세스할 수 있습니다. 액세스 한정자 없이 클래스 내에 선언된 형식은 기본적으로 기본 private값이므로 이 예제의 데이터 멤버는 키워드가 제거된 경우에도 계속 private 적용됩니다. 마지막으로 매개 변수가 없는 생성자()child3를 사용하여 만든 개체의 age 경우 필드는 기본적으로 0으로 초기화됩니다.

C# 언어 사양

자세한 내용은 C# 언어 사양을 참조하세요. 언어 사양은 C# 구문 및 사용의 최종 소스입니다.

참고하십시오