Java中如何组合类

发布于 2024-12-02 22:10:34 字数 593 浏览 5 评论 0原文

我有一个 Android 应用程序,其中包含一个 Activity、一个线程和一个用于保存数据的类。

我创建了一个抽象类ActivityTemplate,它扩展了Activity 类并实现了一些回调,例如onTouchListener。这还包括一些抽象方法。 我创建了一个抽象类(ThreadTemplate),它扩展了 Thread 类并包含一些抽象方法。 我创建了一个抽象的 DataTemplate 类,它包含一些数据元素和一些简单的操作方法。

我可以通过派生三个类来生成我的应用程序,其中一个类来自上面的每个“模板”,但我真的希望能够将它们全部汇总到一个 MyTemplate 类中,我可以从中派生我的应用程序。

有点:

public class MyTemplate extends ActivityTemplate, ThreadTemplate, DataTemplate

然后

public class MyApp extends MyTemplate

但是 MyTemplate 类将无法编译,因为您只能扩展一个类。

有什么想法,还是我在问不可能的事情?

I have an Android app with an Activity, a Thread and a class to hold data.

I have created an abstract class ActivityTemplate which extends the Activity class and implements some callbacks, e.g. onTouchListener. This also includes some abstract methods.
I have created an abstract class (ThreadTemplate) which extends the Thread class and includes some abstract methods.
I have created an abstract DataTemplate class which holds some data elements and some simple methods to manipulate it.

I can produce my app by deriving three classes, one from each of the 'Template's above, but I really want to be able to roll them all up into a single MyTemplate class from which I can derive my app from.

Sort of:

public class MyTemplate extends ActivityTemplate, ThreadTemplate, DataTemplate

then

public class MyApp extends MyTemplate

But the MyTemplate class will not compile as you can only extend one class.

Any thoughts, or am I asking the impossible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦幻之岛 2024-12-09 22:10:34

使用对象组合而不是继承:

class MyApp {
    private ActivityTemplate activityTemplate;
    private ThreadTemplate threadtemplate;
    private DataTemplate dataTemplate;
}

使用继承时,请始终问自己一个问题:您的子类与父类是否具有“is-a”关系。在本例中,MyApp 不是模板。它有一个模板。

Use object composition instead of inheritance:

class MyApp {
    private ActivityTemplate activityTemplate;
    private ThreadTemplate threadtemplate;
    private DataTemplate dataTemplate;
}

When using inheritance always ask yourself the question whether your subclass has an "is-a" relationship with the parent. In this case, MyApp is not a template. It has-a template.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文