关于oop:为什么接口或抽象类有用?

Why is an interface or an abstract class useful? (or for what?)

所以我的问题是,为什么要使用接口或抽象类?为什么它们有用,为什么?

在哪里可以智能地使用它们?


接口允许您表达类型的功能,而不必担心它是如何完成的。可以在不影响客户端的情况下随意更改实现。

抽象类与接口类似,只是它们允许您为存在的方法提供合理的默认行为。

使用和举例取决于语言。如果你知道Java,你可以在整个API中找到接口和抽象类的例子。java.util集合中包含大量这两者。


当您想要指定一组公共方法和属性时,这些方法和属性非常有用,实现/继承这些方法和属性的所有类都具有公开的行为,所有这些行为都应该提供。

特别是在接口方面,类可以实现多个接口,因此当您试图对其实例必须表现出多种行为的事实进行建模时,这非常方便。

另外,正如维基百科所说,接口是一个类型定义:在函数或方法调用中,任何可以将对象作为参数传递的地方,要交换的对象的类型都可以用接口而不是特定的类来定义,这允许以后使用相同的函数交换不同的对象类型:因此,这样的代码转换更具通用性和可重用性。