我是新来的。我是否可以说,Interface是一组通用行为,这些行为可能由一组具有共同之处的对象拥有并唯一地起作用?抽象类与Interface有相似之处,但它有默认方法,也可以由一组对象来拥有和执行?谢谢
发布于 2017-03-01 08:21:02
不是的。通常你会说:
发布于 2017-03-01 08:52:09
不,严格意义上的接口根本没有任何行为。
它定义了正式的交互规则。
更确切地说,它定义了方法的输入(参数)和输出(返回)类型,但没有断言输出值如何依赖于输入以及方法调用可能产生的副作用。
我喜欢在Java 8中添加thet,您可以通过定义默认方法在接口中添加行为,这就是为什么我在一开始就写了“在一条线上”。
发布于 2017-03-01 09:55:31
“一般行为”不是接口的意义。
理解在OOP中,接口可能意味着两种不同的事情。
对象的内部接口实际上只是一组消息,您可以通过调用它的方法来发送它。这里没有定义任何行为。
还有一些语言所具有的显式接口类型。这与抽象类竞争,但根据您的语言有一组稍微不同的规则。
使用抽象类型,您可以定义可以被重写的行为,这些行为可以被认为是“一般行为”。在某些语言的某些版本中,您可以使用一种不幸地决定称为“接口”的类型来完成同样的任务。
这些显式接口是最近才赋予这种能力的。他们添加它是因为他们在扩展已发布的接口时不想破坏遗留代码。这让他们提供了我更喜欢的“默认行为”。如果他们知道这种类型的接口最终会允许这样做的话,他们是否会把这种类型命名为“接口”,这是值得怀疑的。
所以不,“一般”行为更多的是一个抽象的类事物。现在有了合成,这在很大程度上是一种“默认”行为。从外表看,这一切看起来都是一样的。
https://softwareengineering.stackexchange.com/questions/343242
复制