gpt4 book ai didi

java - 如何将相同的方法添加到多个类( Activity )

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:32 24 4
gpt4 key购买 nike

我有 3 个类 A、B 和 C。它们扩展了另一个类 D。

D 类有一个方法在所有 A、B 和 C 类中使用。

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

我不敢相信我应该在我的所有类(class)中复制并粘贴该方法。在 C 中有类似 include for 函数的东西吗?

顺便说一句,我正在开发 Android 应用程序。类 D 扩展 Activity 并具有管理 Android Activity A、B 和 C 的公共(public)菜单的方法(这是 Android 文档中报告的官方方法)。但是,我需要这些 Activity 扩展不同的类,例如 ActivityList 而不仅仅是 Activity 类。

最佳答案

如果您的方法不需要访问私有(private)状态,则在类 D 中添加一个静态方法,并从 A、B、C 调用该静态方法。

如果你的方法确实需要访问私有(private)状态,看看你是否可以通过为每个类添加一个包私有(private)的getter来排除使用私有(private)状态的需要,然后使用A中的方法。

否则,请尝试将一些逻辑分解为通用接口(interface),而不是父类(super class)。

否则,请尝试委托(delegate)给辅助类。 (例如@Marcelo 指出的组合而不是继承)

否则,重复A、B、C各类中的方法。


作为通用接口(interface)方式的例子,结合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 - 如何将相同的方法添加到多个类( Activity ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com