在菲羅通過示例圖書,我讀了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++提供的最大封裝僅限於類級別 –