通过 class 扩展 class 从而扩展另一个 class 是一个好的做法吗?
Is extending class by class which extedning another class a good practice?
我在 Java 中扩展多个 classes 时缺少它。我想在一个 class 中定义一些属性和方法,以便将这些属性和方法保存在一个地方,这些属性和方法将在多个 class 中用于不同的目的。接下来,我需要 JPanel 功能,所以我也需要通过这个 class 扩展我的 class。
我考虑了一种解决方案,但我不确定这是正确的方法。
这是制作这样的东西的好习惯吗?我有 class:
/*
* 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() {
}
/* ... */
}
接下来,我将使用此扩展部分 classes:
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 */
我看到了主要的缺点:
- 尚不清楚有多少 class 被其他 class 扩展。我必须检查扩展 class 的来源以检查它是否没有扩展另一个,
- 我没有在顶部看到最重要的信息:基础 Class 是 JPanel,
- 如果有更多 classes...
不清楚 "chain" 会很糟糕
当然,接口不能有属性和实现的方法,所以它们对我来说不可用。
对于 Abstract classes 也不支持扩展多个。
有人可以给我建议如何处理这个 Java 的继承吗? (=请告诉我,世界仍然很美,我的问题已有 "beautiful" 解决方案...)
有人认为composition is better than inheritance
。
您可能想看看 strategy pattern and decorator pattern。
我在 Java 中扩展多个 classes 时缺少它。我想在一个 class 中定义一些属性和方法,以便将这些属性和方法保存在一个地方,这些属性和方法将在多个 class 中用于不同的目的。接下来,我需要 JPanel 功能,所以我也需要通过这个 class 扩展我的 class。
我考虑了一种解决方案,但我不确定这是正确的方法。 这是制作这样的东西的好习惯吗?我有 class:
/*
* 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() {
}
/* ... */
}
接下来,我将使用此扩展部分 classes:
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 */
我看到了主要的缺点:
- 尚不清楚有多少 class 被其他 class 扩展。我必须检查扩展 class 的来源以检查它是否没有扩展另一个,
- 我没有在顶部看到最重要的信息:基础 Class 是 JPanel,
- 如果有更多 classes... 不清楚 "chain" 会很糟糕
当然,接口不能有属性和实现的方法,所以它们对我来说不可用。 对于 Abstract classes 也不支持扩展多个。
有人可以给我建议如何处理这个 Java 的继承吗? (=请告诉我,世界仍然很美,我的问题已有 "beautiful" 解决方案...)
有人认为composition is better than inheritance
。
您可能想看看 strategy pattern and decorator pattern。