SqueakByExample:12.7
Jump to navigation
Jump to search
Metaclass 의 메타클래스는 Metaclass 의 인스턴스이다.
답변이 필요한 질문은 이제 하나가 남았군요. 바로 Metaclass class 의 클래스는 무엇인가? 입니다.
답변은 간단합니다. 바로 메타클래스입니다. 물론 시스템내의 다른 메타클래스처럼, Metaclass 의 인스턴스여야 합니다.(그림 12.10 참조)
위의 그림은, 모든 메타클래스는 Metaclass 의 인스턴스이며 Metaclass 의 메타클래스 또한 동일하게 Metaclass 의 인스턴스임을 알려주고 있습니다. 그림 12.9 와 그림 12.10 을 비교하면 Object class 까지 메타클래스의 계층은 클래스 계층에 대한 완벽한 반영이 된다는걸 알 수 있습니다.
아래의 예제는, 클래스 계층의 조회에 대해서 그림 12.10 이 나타내는 내용을 정확히 보여주고 있습니다.(사실대로 말하자면, 실제로 사용할때는 약간의 차이가 습니다. Object class superclass 의 결과는 ProtoObject class 가 됩니다, Class 가 아니죠. 스퀵에서 Class 까지 가기 위해서는 한단계의 super클래스를 더 거쳐야 합니다.)
예시 12.1: 클래스 계층
TranslucentColor superclass ⇒ Color
Color superclass ⇒ Object
예시 12.2: 평행 메타클래스 계층
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