class(C# 참조)class (C# Reference)

클래스는 다음 예제와 같이 class 키워드를 사용하여 선언됩니다.Classes are declared using the keyword class, as shown in the following example:

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

설명Remarks

C#에서는 단일 상속만 허용됩니다.Only single inheritance is allowed in C#. 즉, 한 클래스는 하나의 기본 클래스에서만 구현을 상속할 수 있습니다.In other words, a class can inherit implementation from one base class only. 그러나 한 클래스는 두 개 이상의 인터페이스를 구현할 수 있습니다.However, a class can implement more than one interface. 다음 표에는 클래스 상속 및 인터페이스 구현에 대한 예제가 나와 있습니다.The following table shows examples of class inheritance and interface implementation:

상속Inheritance Example
없음None class ClassA { }
SingleSingle class DerivedClass: BaseClass { }
없음. 두 개의 인터페이스 구현None, implements two interfaces class ImplClass: IFace1, IFace2 { }
단일. 하나의 인터페이스 구현Single, implements one interface class ImplDerivedClass: BaseClass, IFace1 { }

다른 클래스 내에 중첩되는 것이 아니라 네임스페이스 내에서 직접 선언되는 클래스는 public 또는 internal일 수 있습니다.Classes that you declare directly within a namespace, not nested within other classes, can be either public or internal. 기본적으로 클래스는 internal입니다.Classes are internal by default.

중첩 클래스를 포함한 클래스 멤버는 public, protected internal, protected, internal, private 또는 private protected일 수 있습니다.Class members, including nested classes, can be public, protected internal, protected, internal, private, or private protected. 기본적으로 멤버는 private입니다.Members are private by default.

자세한 내용은 액세스 한정자를 참조하세요.For more information, see Access Modifiers.

형식 매개 변수가 포함된 제네릭 클래스를 선언할 수 있습니다.You can declare generic classes that have type parameters. 자세한 내용은 제네릭 클래스를 참조하세요.For more information, see Generic Classes.

클래스에는 다음 멤버의 선언이 포함될 수 있습니다.A class can contain declarations of the following members:

Example

다음 예제에서는 클래스 필드, 생성자 및 메서드를 선언하는 방법을 보여 줍니다.The following example demonstrates declaring class fields, constructors, and methods. 또한 개체 인스턴스화 및 인스턴스 데이터 출력을 보여 줍니다.It also demonstrates object instantiation and printing instance data. 이 예제에서는 두 개의 클래스가 선언됩니다.In this example, two classes are declared. 첫 번째 클래스인 Child는 private 필드 2개(nameage), public 생성자 2개, public 메서드 1개를 포함합니다.The first class, Child, contains two private fields (name and age), two public constructors and one public method. 두 번째 클래스인 StringTestMain을 포함하는 데 사용됩니다.The second class, StringTest, is used to contain 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.
*/

설명Comments

이전 예제에서 private 필드(nameage)는 Child 클래스의 public 메서드를 통해서만 액세스할 수 있습니다.Notice that in the previous example the private fields (name and age) can only be accessed through the public method of the Child class. 예를 들어 다음과 같은 문을 사용하여 Main 메서드에서 자식의 이름을 출력할 수 없습니다.For example, you cannot print the child's name, from the Main method, using a statement like this:

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

Main이 클래스의 멤버인 경우에만 Main에서 Child의 private 멤버에 액세스할 수 있습니다.Accessing private members of Child from Main would only be possible if Main were a member of the class.

액세스 한정자 없이 클래스 내부에 선언된 형식은 기본적으로 private로 설정되므로 키워드가 제거된 경우 이 예제의 데이터 멤버는 private입니다.Types declared inside a class without an access modifier default to private, so the data members in this example would still be private if the keyword were removed.

마지막으로 매개 변수 없는 생성자(child3)를 사용하여 만들어진 개체의 경우 age 필드는 기본적으로 0으로 초기화되었습니다.Finally, notice that for the object created using the parameterless constructor (child3), the age field was initialized to zero by default.

C# 언어 사양C# language specification

자세한 내용은 C# 언어 사양을 참조하세요.For more information, see the C# Language Specification. C# 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.The language specification is the definitive source for C# syntax and usage.

참고 항목See also