【问题标题】:What class should I extend, AcionBar or ActionBarImpl?我应该扩展哪个类,AcionBar 还是 ActionBarImpl?
【发布时间】:2013-07-14 23:38:56
【问题描述】:

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

【问题讨论】:

    标签: java android android-actionbar class-extensions


    【解决方案1】:

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

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

    【讨论】:

    • 好的,谢谢。我有点犹豫,因为我以前从未见过 Impl 类扩展。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      相关资源
      最近更新 更多