考虑这个类层次结构:实现接口的类和接口之间是否有任何关系?
Book extends Goods
Book implements Taxable
我们都知道,有一个子类,它的超(IS-A)之间的关系。
问:Book
与Taxable
之间有“is-a”之类的关系吗?
很好的答案,但你说“是”的也Book
和Taxable
,但之间的关系“是一个”是类之间的关系和接口是不是一类!
考虑这个类层次结构:实现接口的类和接口之间是否有任何关系?
Book extends Goods
Book implements Taxable
我们都知道,有一个子类,它的超(IS-A)之间的关系。
问:Book
与Taxable
之间有“is-a”之类的关系吗?
很好的答案,但你说“是”的也Book
和Taxable
,但之间的关系“是一个”是类之间的关系和接口是不是一类!
是的。关系完全相同
本书也是应纳税的。
编辑
接口是恰好符合Java的(也可能是C#我不知道)interface
关键字的神器。
在OO接口是一类是“提交”的操作集,仅此而已。就像对象类和客户端之间的契约。
没有interface
关键字的OO编程语言仍然具有类接口OO概念。
“表现得像......”
这就是我所说的。不是东西,而是表现得像某种东西。或者作为替代品“可以做某事”,但这比行为更具体。
那么有“支持的操作”。就我个人而言,我发现“is-a”,“can-do”等助记符非常有用。我更喜欢根据类型允许的方式来考虑,无论它们是专门化现有行为还是自己实现行为。类比抽象等类似的东西往往是漏洞。如果您知道接口继承和实现继承之间的区别,您可能不需要任何额外的措辞来表达它。
这应该这样做:
public static boolean implementsInterface(Object object, Class interf){
return interf.isInstance(object);
}
例如,
java.io.Serializable.class.isInstance("a test string")
计算为真。
的关系会像说:'工具'
这些关系名称从句子使用的春天。 “书”是 - 一个“货物”可以写没有引号和连字符,它是有道理的。同样,Book'implements'Taxable可以不带引号。
什么是所有的兴奋?多个问号和多个感叹号?
即使Taxable是一个接口,它是否会打扰您,我们可以说Book是Taxable,请冷静下来。
对于一个类与接口和超类的关系,语言中有不同的关键字,但这种关系的概念性质是相同的,因此使用相同的英文术语来描述它是完全合理的。一本书是应税的,就像一本书是一件好事。为了使术语更接近,一本书是一个TaxableItem。没关系。
Book implements Taxable
这里也Book
和Taxable
之间的关系是
书 '是' 应纳税
Refer this。你可以看到它说
当我们谈论继承最常用的关键字将延伸和工具。这些词将决定一个对象是否是另一个对象类型。
当我们说一个类扩展另一个类时,它具有强大的关系,称为“继承”。这意味着当一个孩子延伸父母时,孩子应该能够像马一样从父类继承某种动物。马正在继承动物的某些属性。但是当一个类实现另一个类时,那么子类正在尝试执行一个契约,不需要继承任何父母在契约之后的任何东西,为什么接口的所有方法默认为抽象的,但是你可以在类中提供一些具体的方法(用于继承子类),并且可以使一些抽象很好。
所以对我来说是扩展继承和接口在实施contract.hope这是令人满意的
各种各样的欺骗:http://stackoverflow.com/questions/766106/test-if-object-implements-interface/ 768633 – cgp 2009-06-26 16:59:50
如果我们总结愚蠢,那么会有一段时间不会有新的问题被允许。 – geowa4 2009-06-26 17:03:15
我没有投票结束,我只是觉得案件足够接近,值得关注。 – cgp 2009-06-26 17:10:38