我确信这个问题已经有了答案,我只是不知道如何用良好的搜索术语来描述我需要做什么。
假设我正在尝试制作一个程序来处理独特的木材(每个木材都有一个 ID)以及由这些独特的木材制成的 table 的销售。我有两个类:WoodPiece 和 Table。
我应该如何创建 Table 类,以便它可以拥有列出了独特木件的 Table 实例,以便您可以添加和删除这些木件,直到 table 实际制造和销售为止?现在我想将 Table 设为 WoodPiece 的子类,它只有一个 woodPieces 的 ArrayList。
我不太擅长 Java,所以我想在浪费大量时间回溯之前确保我有正确的想法。您知道的任何关于这方面的教程都会很棒。我的程序使用 JavaFx。
最佳答案
我将使用组合来构造 Table 类。 table 不是木片,而是它包含木片。 future ,一张 table 可能有 table 布,也可能有人等。
class Table
{
private Map<String, WoodPiece> woodPieces = new HashMap<>();
public Table ()
{
// constructor
}
public void addWoodPiece (WoodPiece wp)
{
woodPieces.put(wp.getID(), wp);
}
public WoodPiece removeWoodPiece (String id)
{
return woodPieces.remove(id);
}
}
注意:我使用了 map 而不是列表,因为您的 WoodPiece 对象具有与其关联的唯一 ID。此外,我假设您不关心木 block 的顺序,因为 table 实际上没有组成它的木材的自然顺序。
进一步阅读:https://en.wikipedia.org/wiki/Composition_over_inheritance
关于Java/JavaFX 类由另一个类的实例组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42611441/