Theo khái niệm, superclass
là cấp độ gốc của lớp của đối tượng. tức là Cấp độ một lớp cao hơn trong phân cấp Lớp so với Lớp của đối tượng hiện tại.
Là một phương thức được đặt tên, nó trả về tên của siêu lớp ngay lập tức của người nhận. ví dụ: nó definedin Squeak Smalltalk (và cũng có thể trong các dẫn xuất của nó, Pharo và CUIS) như superclass "Answer the receiver's superclass, a Class." ^superclass
Trong Dolphin Smalltalk, nó được định nghĩa như 'cha "Trả lời một mà là ngay lập tức lớp cha của người nhận (hoặc nếu không có)."
^superclass'
Nhưng - mọi lớp trong phân cấp Lớp thực sự là một thể hiện của lớp cha. Vì vậy, lớp mà một lớp nhất định là một thể hiện của, là lớp học của MetaClass.
Vì vậy, ví dụ: aSortedCollection là một đối tượng - một thể hiện của Class SortedCollection.
SortedCollection là Class 'ClassedCollection' có tên lớp trong phân cấp Lớp có thể duyệt. Đồng thời, nó cũng là cũng là một thể hiện của một Metaclass - một Lớp ẩn danh có một cá thể đối tượng đơn lẻ, là một lớp có tên. Lớp được đặt tên có thể nhìn thấy trong hệ thống phân cấp lớp, nhưng Metaclass (ẩn danh) ít được nhìn thấy nhiều hơn. Nó có đó để Smalltalk
Smalltalk duy trì cấu trúc phân cấp Metaclass, tức là phân cấp của các Lớp học của Lớp học. Nó ít hiển thị hơn, vì nó được giữ như là các đối tượng hệ thống ẩn danh, nhưng bạn có thể tìm thấy cấp cao nhất của hệ thống phân cấp Metaclass trong trình duyệt Lớp. Cả hai loại Class
và Class Metaclass
đều được tìm thấy dưới dạng các phân lớp phụ của Class Behaviour
, chính nó là một phân lớp con của Class Object
.
Một lý do mà mọi người nói rằng "Trong Smalltalk, mọi thứ là một đối tượng" là vì Lớp Object
là gốc của tất cả các Lớp và đối tượng khác - nó ở trên cùng của phân cấp đối tượng, chứa phân cấp Lớp và phân cấp Metaclass.
(Nó thường ở giai đoạn này mà bộ não của tôi bắt đầu chảy máu ra khỏi tai của tôi, nhưng thứ sau 3 điểm giúp đẩy nó tất cả lại vào hộp sọ của tôi)
Nếu bạn gửi tin nhắn anInstanceOfAClass class
- bạn sẽ nhận được
Lớp đối tượng anInstanceOfAClass đã trả lại.
Nếu bạn gửi tin nhắn anInstanceOfAClass class superclass
- bạn sẽ nhận được
Lớp cha của Lớp đối tượng anInstanceOfAClass đã trả lại.
Nếu bạn gửi thư anInstanceOfAClass class class
- bạn sẽ nhận được singleton ẩn danh Metaclass của Lớp đối tượng anInstanceOfAClass đã trả lại.
Cảm ơn bạn đã liên kết! Có vẻ là những gì tôi đang tìm kiếm. – duke
Bạn nên bao gồm ý chính của cuốn sách trả lời câu hỏi này thay vì chỉ đề cập đến một liên kết. Khi liên kết đó bị hỏng, câu trả lời này sẽ không còn hữu dụng nữa –