SqueakByExample:12.7

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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