5

考虑这个类层次结构:

  • Book extends Goods
  • Book implements Taxable

众所周知,子类与其超类(is-a)之间存在关系。

Book问:和之间是否存在类似“is-a”的关系Taxable

好的答案,但你说“is-a”也是和之间的关系BookTaxable“ is-a”是之间的关系,接口不是类!

4

8 回答 8

8

是的。关系完全一样

书也是应税的。

编辑

接口是碰巧匹配 Java(可能是 C#,我不知道)interface关键字的工件。

在 OO 接口中,是“提交”类执行的一组操作,仅此而已。就像对象类与其客户之间的契约。

没有interface关键字的面向对象编程语言,仍然有类接口面向对象的概念。

于 2009-06-26T16:59:21.360 回答
5

好吧,有“支持操作”。就我个人而言,我不认为“is-a”、“can-do”等助记符非常有用。我更喜欢从类型允许的角度来考虑,无论它们是专门化现有行为还是自己实现行为等。类比,如抽象,往往是泄漏的。如果您知道接口继承和实现继承之间的区别是什么,您可能不需要任何额外的措辞来表达它。

于 2009-06-26T16:59:41.593 回答
3

“表现得像……”

这就是我要说的。不是某物,但表现得像某物。或者作为替代“可以做某事”,但这比行为更具体。

于 2009-06-26T16:59:06.043 回答
3

关系将如所述:“实现”

这些关系名称源于句子中的用法。“Book 'is-a' Goods”可以不用引号和连字符来写,这是有道理的。类似地,Book 'implements' Taxable 可以不用引号来书写。

于 2009-06-26T17:03:43.650 回答
2

当我们说一个类扩展另一个类时,它具有称为“继承”的强关系。这意味着当一个孩子扩展父母时,孩子应该能够从父类继承一些东西,比如马是一种动物。马继承了一些属性动物。但是当一个类实现另一个类时,子类试图实现一个契约不需要从父类继承任何东西只是遵循契约,这就是为什么接口所有方法默认都是抽象的,但你可以在类中提供一些具体的方法(供子类继承)并且可以使一些抽象很好。

所以对我来说扩展是实现合同的继承和接口。希望这是令人满意的

于 2013-09-28T14:53:00.330 回答
1

这应该这样做:

public static boolean implementsInterface(Object object, Class interf){
    return interf.isInstance(object);
}

例如,

 java.io.Serializable.class.isInstance("a test string")

评估为真。

from:测试对象是否实现接口

于 2009-06-26T17:00:29.660 回答
0

有什么好激动的?多个问号和多个感叹号?

即使 Taxable 是一个接口,我们可以说 Book is Taxable 是否让您感到困扰?请冷静下来。

类与接口和超类的关系在语言中有不同的关键字,但这种关系的概念性质是相同的,因此使用相同的英文术语来描述它是完全合理的。一本书是应税的,就像一本书是一种商品一样。为了使条款更接近,Book 是 TaxableItem。没关系。

于 2009-06-26T18:17:45.153 回答
0
Book implements Taxable

Book这里和之间的关系Taxable也是

书“是”应税的

参考这个。你可以看到它说

当我们谈论继承时,最常用的关键字是extendsimplements。这些词将确定一个对象是否是另一个对象类型。

于 2012-07-04T07:05:56.920 回答