공용 형식 시스템의 클래스
업데이트: 2007년 11월
개체 지향 프로그래밍에 익숙하다면 개체로 수행할 수 있는 작업(메서드, 이벤트 및 속성)과 개체의 상태를 유지하는 값(필드)을 클래스에서 정의한다는 것을 알 것입니다. 대개 클래스에는 정의와 구현이 모두 포함되어 있지만 구현이 없는 멤버가 하나 이상 있을 수도 있습니다.
클래스의 인스턴스는 개체입니다. 개체의 메서드를 호출하고, 개체의 속성, 이벤트 및 필드에 액세스하여 개체의 기능을 사용할 수 있습니다.
다음 표에는 런타임에서 클래스가 가질 수 있는 일부 특성에 대한 설명이 나와 있습니다. 특성 클래스를 통해 사용할 수 있는 추가 특성은 이 목록에 나와 있지 않습니다. 언어에 따라서는 이 특성을 모두 사용하지 못할 경우도 있습니다.
특징 |
설명 |
---|---|
sealed |
이 형식에서 다른 형식을 파생할 수 없도록 지정합니다. |
implements |
인터페이스 멤버의 구현을 제공하여 클래스에서 하나 이상의 인터페이스를 사용할 수 있음을 나타냅니다. |
abstract |
클래스의 인스턴스를 만들 수 없도록 지정합니다. 이러한 클래스를 사용하려면 다른 클래스를 파생해야 합니다. |
inherits |
기본 클래스를 지정한 곳에서 클래스의 인스턴스를 사용할 수 있음을 나타냅니다. 기본 클래스에서 상속된 파생 클래스에서는 기본 클래스에서 제공하는 가상 메서드의 구현을 사용할 수도 있고, 파생 클래스의 고유한 구현을 사용하여 가상 메서드의 구현을 재정의할 수도 있습니다. |
exported 또는 not exported |
클래스를 정의한 어셈블리 밖에서 클래스를 볼 수 있는지의 여부를 지정하며 최상위 클래스에만 적용됩니다. |
중첩된 클래스에도 멤버 특성이 있습니다. 자세한 내용은 형식 멤버를 참조하십시오.
구현이 없는 클래스 멤버는 추상 멤버입니다. 하나 이상의 멤버가 있는 클래스는 그 자체가 추상적이기 때문에 이 클래스의 새 인스턴스를 만들 수 없습니다. 런타임을 대상으로 하는 일부 언어에서는 추상 멤버가 없는 클래스를 추상으로 표시할 수 있습니다. 파생된 클래스에서 상속하거나 재정의할 수 있는 기본 기능의 집합을 캡슐화해야 하는 경우 상황에 따라 추상 클래스를 사용할 수 있습니다. 추상이 아닌 클래스를 구체적인 클래스라고 합니다.
클래스에서는 인터페이스를 여러 개 구현할 수 있지만 단일 기본 클래스에서만 상속할 수 있습니다. 모든 클래스에는 클래스의 새 인스턴스를 초기화하는 생성자가 최소한 하나는 있어야 합니다.
런타임을 지원하는 각 언어에는 클래스나 클래스 멤버가 특정한 특성을 갖고 있음을 표시하는 방식이 있습니다. 해당 언어에 맞는 구문을 사용하여 특성을 표시하면 클래스 구현과 함께 클래스 및 클래스 멤버의 특성이 메타데이터로 저장됩니다.