0

我觉得这是一个带有一些技巧的基本问题。
我想扩展ActionBar的功能,查看ActionBar代码发现ActionBar是一个抽象类,真正的实例化类是ActionBarImpl。
这种具有抽象和 Impl 实现的模式在 android 源代码中被广泛使用。
开发者网站不详述细节,但总是描述抽象类,就好像它是实现的类一样。
我看到从 java 语言严格的角度来看,我应该扩展 ActionBarImpl,否则我将无法调用super方法,但我从未见过扩展<class>Impl类的示例。
帮助。

4

2 回答 2

2

在这种情况下,抽象和实现之间的唯一区别可能是抽象方法。如果实现类提供的默认行为是可接受的,我会说扩展它并覆盖您需要的其他方法。

如果你想要的抽象方法行为意味着你根本不能使用实现,那么扩展抽象类。

于 2013-07-14T23:41:42.057 回答
2

是的,您应该扩展 Impl 类以进行扩展,因为如果您扩展抽象类,则必须提供抽象方法的实现,并且如果您不打算“改变”现有行为而只是“扩展”或添加新的行为然后你最好扩展 Impl 类。

于 2013-07-14T23:43:37.670 回答