有没有办法在现有的继承树中插入自定义类?

时间:2011-08-25 17:18:56

标签: java android

我正在开发一个Android应用程序,它目前有两个活动,A和B,它们有一些共同的代码,它们的选项菜单和一些其他代码。为了减少复制和粘贴,我创建了一个名为BaseActivity的类,它使用,扩展了Activity,然后让A和B扩展BaseActivity。至少那是我想做的,但我遇到了一个问题。虽然A现在很好地扩展了BaseActivity,但我无法弄清楚如何使B扩展BaseActivity,因为它不仅仅是一个活动,而是一个MapActivity。所以它的继承树看起来像这样:

MapActivity继承树:

java.lang.Object
   android.content.Context
       android.content.ContextWrapper
           android.view.ContextThemeWrapper
               android.app.Activity
                   com.google.android.maps.MapActivity

但是为了继承我的代码,我需要让它看起来像这样:

java.lang.Object
   android.content.Context
       android.content.ContextWrapper
           android.view.ContextThemeWrapper
               android.app.Activity
                  mypackage.BaseActivity
                     com.google.android.maps.MapActivity

有没有办法在继承树中插入我的自定义类?

2 个答案:

答案 0 :(得分:4)

不,你不能。很难确切地说这里最好的方法是什么,但我至少尝试使用组合而不是继承。你能实现一个单独的非活动对象并使用A和B中的一个吗?

答案 1 :(得分:1)

好吧,因为你的代码实际上是一个MapActivity,它应该扩展它(假设你不想做组合)。如果你想组成,你的类会引用MapActivity,这将允许你与该类进行交互。