【发布时间】:2020-02-06 03:03:28
【问题描述】:
在 Java 中扩展多个类对我来说是缺失的。我想在一个类中定义一些属性和方法,以将这些属性和方法保存在一个地方,这些属性和方法将在多个类中用于不同的目的。接下来,我需要 JPanel 功能,所以我也需要通过这个类扩展我的类。
我考虑了一种解决方案,但我不确定它是否正确。 这是做这样的事情的好习惯吗?我有课:
/*
* Class for keeping common arguments
* it is not possible to extends by two classes
* so I need extend here JPanel
*/
public class **ContentPanel** extends javax.swing.**JPanel** {
private arg1;
private arg2;
public void commonMethod1() {
}
/* ... */
}
接下来,我将这个扩展用于一些类:
public class CashboxesPanel extends ContentPanel {
/* specific class with all needed functionality, some arguments, methods used only for this class ect. */
}
public class CardIndexesPanel extends ContentPanel {
/* next specific class with implemeted original funcionality not used anywhere */
}
/* more classes */
我看到了主要的缺点:
- 尚不清楚有多少类被其他类扩展。我必须检查扩展类的来源以检查它是否没有扩展另一个,
- 我没有看到最重要的信息:基类是 JPanel,
- 如果不明确具有更多类的“链”会很糟糕...
当然,接口不能有属性和实现的方法,所以它们对我不可用。 对于抽象类也不支持扩展多个。
有人可以就如何处理 Java 的继承问题给我一些建议吗? (= 请告诉我,世界仍然很美,我的问题有一个现有的“美丽”解决方案......)
【问题讨论】:
-
您的示例表明子类可以访问对子类没有意义的基类行为(方法)。见composition over inheritance。
标签: java inheritance extends