如何将相同的方法添加到多个类(活动)

Bed*_*edo 5 java android

我有3个类A,B和C.这些扩展了另一个类D.

D类有一个在所有A,B和C类中使用的方法.

现在问题是类A,B和C应该扩展不同的类并使用D类中的相同方法.

我无法相信我应该在所有课程中复制和粘贴该方法.在C中有类似功能的包含吗?

顺便说一下,我正在开发Android应用程序.D类扩展了Activity,并提供了一种管理Android活动A,B和C的常用菜单的方法(这是Android文档中报告的官方方法).但是我需要这些活动扩展不同的类,比如ActivityList而不仅仅是Activity类.

Jas*_*n S 7

如果您的方法不需要访问私有状态,请在D类中添加静态方法,并从A,B,C中调用静态方法.

如果您的方法确实需要访问私有状态,请查看是否可以通过向每个类添加package-private getter来使用私有状态,然后在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);
   }
}
Run Code Online (Sandbox Code Playgroud)