一个非常基本的问题,但在阅读“设计模式:可重复使用的OO软件的元素”一书之后,我有点困惑。
这本书说明了,
“对象的类型仅指其对象 interface-要求的集合 它可以回应。一个对象可以有 许多类型和不同的对象 类可以具有相同的类型。“
有人可以更好地解释什么是类型?我也不明白一个对象如何有多种类型......除非这本书讲的是多态性......
答案 0 :(得分:1)
这种意义上的类型不一定是实际类型的对象。
它在谈论对象提供的服务意义上的类型。这可能是具有多重继承的多种类型,也可能是具有多个接口的实际类型。
例如,在Java下,您可能有一个应用程序类(具有其实际类型),它还提供了一个独特的用户输入接口(键盘和鼠标I / O)。
这是一个具有多种类型的对象的例子。
具有相同“类型”(在您的引用意义上)的多个对象的示例是您的经典几何形状类,如square
,rectangle
,circle
等等。所有这些不同的对象可能具有相同的“类型”,因为它们的界面由setPosition()
,setSize()
和drawShape()
组成。
答案 1 :(得分:1)
可能是一个有助于澄清的例子。我假设类是一种特殊的类型。
class Dog : Animal {...};
class Fish : Animal {...};
Dog lassie = new Dog();
// An object can have many types:
// lassie is a dog and an Animal
Fish nemo = new Fish();
// objects of different classes can have the same type:
// lassie and nemo are animals
答案 2 :(得分:0)
将类型视为合同。假设您有一个动物园,并且您有一定数量的动物。
嗯,对于你拥有的任何动物,你可以确保他们有一个指定的笼子(一个例子)。如果动物是哺乳动物,您可以获得哺乳动物的细节。如果他们是游泳运动员,你可以获得他们预先设定的水的温度,等等。
在这种情况下,你会有很多类型IEntity,IMammal和ISwimmer以及一个给定的对象,例如企鹅类型为IEntity并且类型为ISwimmer。请记住类型契约的类比,这就是类型说明给定对象可以回复的请求的原因,就像合同说明你可以做什么以及你不能为特定的合同任务做什么。
希望我的回答有帮助