클래스는 다음 예제와 같이 키워드 class를 사용하여 선언됩니다.
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
비고
C#에서는 단일 상속만 허용됩니다. 즉, 클래스는 하나의 기본 클래스에서만 구현을 상속할 수 있습니다. 그러나 클래스는 둘 이상의 인터페이스를 구현할 수 있습니다. 다음 표에서는 클래스 상속 및 인터페이스 구현의 예를 보여 줍니다.
| 상속 | 예시 |
|---|---|
| 없음 | class ClassA { } |
| 싱글 | class DerivedClass : BaseClass { } |
| 없음, 두 인터페이스 구현 | class ImplClass : IFace1, IFace2 { } |
| 단일, 하나의 인터페이스 구현 | class ImplDerivedClass : BaseClass, IFace1 { } |
다른 클래스 내에 중첩되지 않은 네임스페이스 내에서 직접 선언하는 클래스는 public 또는 internal일 수 있습니다. 클래스는 기본적으로 사용됩니다 internal .
중첩 클래스를 포함한 클래스 멤버는 public, protected internal, protected, internal, private 또는 private protected일 수 있습니다. 멤버는 기본적으로 사용됩니다 private .
자세한 내용은 액세스 한정자를 참조하세요.
형식 매개 변수가 있는 제네릭 클래스를 선언할 수 있습니다. 자세한 내용은 제네릭 클래스를 참조하세요.
클래스는 다음 멤버의 선언을 포함할 수 있습니다.
예시
다음 예제에서는 클래스 필드, 생성자 및 메서드를 선언하는 방법을 보여 줍니다. 또한 개체 인스턴스화 및 인스턴스 데이터 인쇄를 보여 줍니다. 이 예제에서는 두 클래스가 선언됩니다. 첫 번째 클래스 Child는 두 개의 프라이빗 필드(name 및 age), 두 개의 public 생성자와 하나의 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 메서드 Child 를 통해서만 프라이빗 필드(name및age)에 액세스할 수 있습니다. 예를 들어 다음과 같은 문을 사용하여 메서드에서 Main 자식의 이름을 인쇄할 수 없습니다.
Console.Write(child1.name); // Error
클래스의 멤버인 경우에만 원본 Main 의 Child 프라이빗 멤버에 액세스할 수 Main 있습니다.
액세스 한정자가 없는 클래스 내에서 선언된 형식은 기본적으로 기본값 private이므로 이 예제의 데이터 멤버는 키워드가 제거된 경우에도 계속 됩니다 private .
마지막으로 매개 변수가 없는 생성자()child3를 사용하여 만든 개체의 경우 필드가 age 기본적으로 0으로 초기화되었습니다.
C# 언어 사양
자세한 내용은 C# 언어 사양을 참조하세요. 언어 사양은 C# 구문 및 사용의 최종 소스입니다.
참고하십시오
.NET