SqueakByExample:12.7
Metaclass의 metaclass는 Metaclass의 인스턴스입니다.
답변되어야 할 마지막 질문은 Metaclass class의 클래스가 무엇인가? 입니다.
답변은 단순합니다. 그 클래스는 메타클래스(metaclass)이며, 시스템에 있는 모든 다른 메타클래스(metaclases)들 처럼, 반드시 Metaclass의 인스턴스가 되어야 합니다. (그림 12.10을 보십시오)
그림은 Metaclass 자체의 metaclass를 포함하여, 어떻게 모든 metaclass가 Metaclass의 인스턴스인지를 보여드립니다. 만약 여러분이 그림 12.9와 12.10을 비교하신다면, 메타클래스 계층도(the metaclass hierarchy)가, 오브젝트 클래스에 이르기까지 클래스 계층도(class hierarchy)를 어떻게 완벽하게 반영(mirror)하는지를 보게 되실 것입니다.
다음 예시는, 그림 12.10이 정확하다는 것을 나타내기 위해 클래스 계층도를 조회하는 방법을 보여드립니다. (실제로, 여러분은 우리가 악의없는 거짓말을 하였다는 것을 알게 되실 것입니다. Object class superclass ⇒ ProtoObject class이며, ⇒ Class가 아닙니다. 스퀵에서, 우리는 Class에 도달하기 위해 더 높은 superclass로 가야 합니다)
예시 12.1: 클래스 계층도 (The class hierarchy)
TranslucentColor superclass ⇒ Color
Color superclass ⇒ Object
예시 12.2: 평행 메타클래스 계층도(The parallel metaclass hierarchy)
TranslucentColor class superclass ⇒ Color class
Color class superclass ⇒ Object class
Object class superclass superclass ⇒ Class "NB: skip ProtoObject class"
Class superclass ⇒ ClassDescription
ClassDescription superclass ⇒ Behavior
Behavior superclass ⇒ Object
예시 12.3: Metaclass의 인스턴스
TranslucentColor class class ⇒ Metaclass
Color class class ⇒ Metaclass
Object class class ⇒ Metaclass
Behavior class class ⇒ Metaclass
예시 12.3: Metaclass의 class는 Metaclass입니다
Metaclass class class ⇒ Metaclass
Metaclass superclass ⇒ ClassDescription