一个位于实例端:
Object subclass: #MyClass
instanceVariableNames: ''
classVariableNames: ''
category: 'MyApp'
另一个在课堂上可以访问:
MyClass class
instanceVariableNames: ''
答案 0 :(得分:2)
当你创建一个新类(例如一个Pen)时,你创建了一个类,它是一个元类的实例(这将是Pen类),你将能够获得作为Pen类实例的Pen实例。
你可以拥有很多笔,但你只有一个Pen类。
实例变量是一个实例的变量。每个实例都有自己的变量。每支笔都有自己的颜色。
类变量是Class对象(Pen类)的变量。由于您只有一个Pen类实例,因此该变量只有一个值。如果您的笔具有类变量#DefaultColor,则myPenInstance class defaultColor
将为所有Pen实例返回相同的内容。
最后,类侧的实例变量作为实例端的实例变量,但是对于类。
类变量和类侧的实例变量之间的区别在于,类变量对于类及其子类是唯一的,而类侧的实例变量将特定于每个类的子类。
如果你有一个UniqueInstance类变量,它存储一个带有访问者的Singleton Pen,Pen uniqueInstance
和PenSubclass uniqueInstance
将返回唯一的笔实例。
如果对类侧的实例变量执行相同的操作,Pen uniqueInstance
将返回Pen唯一实例,PenSubclass uniqueInstance
将返回PenSubclass唯一实例。
答案 1 :(得分:1)
在这里,我在这里和那里找到了一些信息。
管理在这里找到一个很好的解释,粘贴在几行中以供参考。人们应该读完整个专栏。 http://esug.org/data/Articles/Columns/EwingPapers/cvars&cinst_vars.pdf
使用类变量的类可以通过一些变得更加可重用 编码惯例。这些编码约定使创建更容易 子类。有时开发人员不恰当地使用类变量。 不恰当地使用类变量会产生类 难以继承。通常,更好的实现选择 特别的问题是类实例变量而不是类 变量。
什么是类变量?课程可以有
•上课 变量和
•类实例变量。
类变量是 通过引用名称来引用实例和类方法 类变量。任何方法,类方法或实例 方法可以引用类变量。