在菲罗通过示例图书,我读了Smalltalk的实例变量和Java
实例变量是私有的实例本身。 这与Java和C++形成鲜明对比,它允许实例变量 (也称为“字段”或“成员变量”)被碰巧是同一类的任何其他实例访问。
我认为它对其他语言如Java或c#也很常见。类的实例不能访问同一类的另一个实例的实例变量。 只针对smalltalk具体如何?
在Smalltalk中,如何能一个实例访问另一个实例的实例变量使用相同的类除非类定义了“存取方法”不能互相访问对方的 实例变量
的两个实例存取方法?
using namespace std;
#include<iostream>
class car {
private:
int mileage;
public:
car(int); // Constructor
int odometer();
};
car::car(int m) {
mileage = m;
}
int car::odometer() {
return mileage;
}
int main(void) {
car ford(10000);
car honda(20000);
cout<<ford.odometer();
cout<<honda.odometer();
}
在这个例子中福特和本田是同一类Car
的两个实例。 福特如何使用本田物件的里程或反之亦然?这是我的实际问题。对不起,如果这是如此天真
我读过答案,并进一步在Pharo By示例书中。我开始明白,在C++和Java中,一个实例可以根据访问修饰符级别访问其他实例的实例变量,如果是私有的,则可以在类中访问它,如果是公共的,则可以在任何地方访问它。但是在Smalltalk中,我们无法在课堂或任何地方进行。由java,C++提供的最大封装仅限于类级别 –