实现接口的类和该接口之间是否有任何关系?

时间:2009-06-26 16:56:30

标签: java interface class-hierarchy

考虑这个类层次结构:

  • Book extends Goods
  • Book implements Taxable

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

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

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

8 个答案:

答案 0 :(得分:8)

是。关系完全相同

书籍也是一种应税。

修改

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

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:3)

“表现得像......”

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

答案 3 :(得分:3)

关系如下所述:'实施'

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

答案 4 :(得分:2)

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

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

答案 5 :(得分:1)

这应该做:

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

例如,

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

评估为真。

来自:Test if object implements interface

答案 6 :(得分:1)

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

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

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

答案 7 :(得分:0)

Book implements Taxable

此处BookTaxable之间的关系也是

  

预订'是'应税'

Refer this。你可以看到它说

  

当我们谈论继承时,最常用的关键字是 extends implements 。这些单词将决定另一个对象 IS-A 类型。