如何同样的方法添加到多个类(活性)
问题描述:
我有3类A,B和C,这些延伸另一类D.如何同样的方法添加到多个类(活性)
d类具有在所有的类A,B中使用的方法,和C.现在
问题是类A,B和C应扩展不同类别和类只使用同样的方法D.
我无法相信,我应该复制和粘贴的方法在我所有的课堂上。有没有像C中包含函数的东西?
顺便说一下,我正在开发一个Android应用程序。 D类扩展了Activity,并有一个管理Android活动A,B和C的通用菜单的方法(这是Android文档中报告的官方方法)。不过,我需要这些活动扩展不同的类,如ActivityList,而不仅仅是Activity类。
答
如果你的方法并不需要从访问私有状态,d类中添加一个静态方法,并调用静态方法A,B,C
如果你的方法确实需要访问私有状态,看你是否能分解出需要通过添加一个包私人吸气每个班使用私有状态,然后使用方法A.
否则,试图分解出一些逻辑来共同接口而不是超类。
否则,请尝试委托给助手类。 (例如组合物而不是继承作为@Marcelo指示)
否则,重复的方法中的每个类A,B,C.
作为共同接口方法的一个例子,具有静态方法组合在D中:
interface MyThing
{
public void doMyThing(String subject);
public List<String> getThingNames();
}
class D
{
static void doSomethingComplicatedWithMyThing(MyThing thing)
{
for (String name : thing.getThingNames())
{
boolean useThing = /* complicated logic */
if (useThing)
thing.doMyThing(name);
}
}
}
class A extends SomeClass implements MyThing
{
/* implement methods of MyThing */
void doSomethingComplicated()
{
D.doSomethingComplicatedWithMyThing(this);
}
}
class B extends SomeOtherClass implements MyThing
{
/* implement methods of MyThing */
void doSomethingComplicated()
{
D.doSomethingComplicatedWithMyThing(this);
}
}
class C extends YetAnotherClass implements MyThing
{
/* implement methods of MyThing */
void doSomethingComplicated()
{
D.doSomethingComplicatedWithMyThing(this);
}
}
答
Java不支持多继承..一个类只能扩展一个类。 也许使用接口是一个好主意。你可以创建一个包含D类方法的接口,并使类A,B和C来实现这个接口..我不知道这是否有帮助。以下是可能对您有用的链接:http://java.sys-con.com/node/37748