오진이 블로그

[제프리 리처의 CLR via C#] 정적 클래스 본문

Development/C#

[제프리 리처의 CLR via C#] 정적 클래스

오늘도 진이 2021. 5. 18. 16:58

2부. 타입 설계

6장. 타입과 멤버의 기본

정적 클래스

  • C#에서는 이런 성격의 클래스를 정의하기 위한 목적으로 static 키워드를 사용하여 클래스를 선언할 수 있게 기능을 제공하고 있다.
  • 정적 클래스로 선언하면 컴파일러는 다음의 사항들을 제한한다.
    • 정적 클래스는 반드시 System.Object에서만 상속을 받도록 제한되는데 상속은 기본적으로 객체에 대해서만 정의될 수 있고, 한 단계 이상 진행되는 다른 모든 상속 타입들의 경우 상속이 가능하다고 해도 인스턴스로 만들 수 없는 이 타입에 대해 특별한 의미를 가지지 못하기 때문에 이를 제한하고 있다.
    • 정적 클래스는 인터페이스를 구현할 수 없도록 제한되는데 인터페이스 메서드는 반드시 클래스의 인스턴스로 생선될 때에만 호출할 수 있기 때문이다.
    • 정적 클래스 안에서는 필드, 메서드, 속성, 이벤트는 모두 정적 멤버로 선언되어야만 한다. 인스턴스 멤버로 컴파일을 시도하면 컴파일러에서는 오류로 처리한다.
    • 정적 클래스는 필드, 메서드 매개변수, 또는 지역 변수의 타입으로 사용될 수 없는데 이러한 경우 모두 클래스를 인스턴스화하는 것과 연관성이 있으므로 이 작업이 허용되지 않기 때문이다. 이렇게 사용되는 모든 코드는 컴파일러에서 오류로 처리한다.
Comments