每当我创建一个抽象类时,我倾向于创建一个接口,并让其他代码引用该接口,而不是抽象类。通常,当我一开始没有创建接口时,我会后悔(比如必须覆盖所有实现的方法来存根类以进行单元测试,或者后来新的类不需要任何实现并覆盖所有东西,也发现自己无法扩展任何其他类)。起初,我试图通过考虑is-a vs - to来区分什么时候使用接口,什么时候使用抽象类,但后来我仍然会因为没有创建接口而痛苦不已。
所以问题是,什么时候只有一个抽象类而根本没有接口是个好主意?
生成器不允许声明这些类实现的接口。相反,它们都实现了相同的功能。让我们调用类A、B和C,A、B和C都有名为f1、f2和f3的函数,但它们是单独实现的,不是接口实现的结果。现在,我想将一个函数声明为一个参数,它的类型类似于接口,它适合A、B和C,并且能够使用f2和f3。我在Kotlin网站上看到了一个,但是找不到像这样的东西。显然,Go可以做这样的事情。}
fun f1 (string: String) {}