实现接口的类与该接口之间是否存在任何关系?

考虑这个类层次结构:

  • Book extends Goods
  • Book implements Taxable

我们知道,子类与其超类(is-a)之间存在关系。

问: BookTaxable之间是否存在类似“is-a”的关系?

GOOD Answers,但你说“is-a”也是BookTaxable之间的关系, 但是 “is-a”是之间的关系,而接口不是类!

是。 这种关系完全一样

书也是一种应税。

编辑

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

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

没有interface关键字的OO编程语言仍然具有类接口OO概念。

那么就是“支持 – 操作”。 就个人而言,我没有发现“is-a”,“can-do”等助记符非常有用。 我更愿意考虑类型允许的内容,是否专注于现有行为或自己实施行为等。类比,如抽象,往往是漏洞。 如果您知道接口inheritance和实现inheritance之间的区别,那么您可能不需要任何额外的用语来表达它。

“表现得像……”

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

关系将如所述: ‘实施’

这些关系名称源于句子中的用法。 “书”是一个“商品”可以写成没有引号和连字符,这是有道理的。 类似地,Book’实施’Taxable可以在没有引号的情况下编写。

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

所以对我来说,扩展是实现contract.hope的inheritance和接口,这是令人满意的

这应该做:

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

例如,

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

评估为真。

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

令人兴奋的是什么? 多个问号和多个感叹号?

即使Taxable是一个界面,我们可以说一本书是应税的吗? 请冷静下来。

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

 Book implements Taxable 

这里还有BookTaxable之间的关系

预订’是’应税

请参阅此 。 你可以看到它说

当我们谈论inheritance时,最常用的关键字将是扩展实现 。 这些单词将决定一个对象是否是另一个对象的IS-A类型。