设计模式:什么是类型?

3
一个非常基础的问题,但在阅读“设计模式:可重用面向对象软件元素”书后,我有点困惑。
该书指出,
“一个对象的类型只是指其接口-它可以响应的请求集。一个对象可以有许多类型,不同类的对象可以具有相同的类型。”
请问有人能更好地解释一下什么是类型吗?我也不明白一个对象如何可以具有多个类型……除非这本书所说的是多态性……
3个回答

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

1

在这个意义上,类型不一定是对象的实际类型。

它所说的类型是指对象提供的服务。这可能是多重继承的多种类型,或者是具有多个接口的实际类型。

例如,在Java中,您可以拥有一个应用程序类(具有其实际类型),该类还提供了独立的用户输入接口(键盘和鼠标I/O)。

这是一个对象具有多个类型的示例。

同一“类型”(按照您的引用的意义)具有多个对象的示例是经典的几何形状类,如正方形矩形圆形等。所有这些不同的对象可能具有相同的“类型”,因为它们的接口包括setPosition()setSize()drawShape()


0

将类型视为合同。假设您有一个动物园,里面有许多动物。

对于您拥有的任何动物,您都可以确保它们有一个指定的笼子(例如)。如果这些动物是哺乳动物,您可以获取哺乳动物的详细信息。如果它们是游泳者,则可以了解它们首选水温等详细信息。

在这种情况下,您将拥有许多类型IEntity、IMammal和ISwimmer以及一个特定对象,例如企鹅是IEntity和ISwimmer类型。请记住类型合同的类比,这就是为什么类型说明了给定对象可以回复的请求,就像合同说明了您可以为特定合同任务做什么和不能做什么一样。

希望我的回答能够帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接