我认为这是一个基本的问题
我想扩展ActionBar的功能,在查找ActionBar代码时,结果是ActionBar是一个抽象类,真正实例化的类是ActionBarImpl。
这种具有抽象和Impl实现的模式在android源代码中被广泛使用
开发人员站点没有详细介绍,但总是将抽象类描述为实现类
我看到从java语言严格来看我应该扩展ActionBarImpl,否则我将无法调用super
方法,但我从未见过扩展<class>Impl
类的示例。登记/>
帮助
答案 0 :(得分:2)
在这种情况下,抽象和实现之间的唯一区别可能是抽象方法。如果实现类提供的默认行为是可接受的,我会说扩展它并覆盖你需要的其他方法。
如果您想要的抽象方法行为意味着您根本无法使用该实现,那么扩展抽象类。
答案 1 :(得分:2)
是的,你应该扩展Impl类的扩展,因为如果你扩展抽象类,你将不得不提供抽象方法的实现,如果你不打算“改变”现有的行为,而只是“扩展“或添加新行为,然后你最好扩展Impl类。