SqueakByExample:12.7

From 흡혈양파의 번역工房
Jump to: navigation, search

Metaclass 의 메타클래스는 Metaclass 의 인스턴스이다.

그림 12.10: 모든 메타클래스는 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


Notes