Java 中的摘要 类

Abstract classes in Java

所以,我有一个面向对象的任务要做。其中一小部分是制作一个图表,由节点组成,可以是类型类别或类型产品。

类别只有名称 ([a-zA-Z0-9]+) 作为参数。

产品有名称 ([a-zA-Z0-9]+) 和 ID (>=0)。

一开始只做了一个节点,在产品中有两个对象类别,它们都是空的,并且根据输入我创建了两个事物之一的实例,一切都很好。

我真的深思熟虑,在我检查了讲座之后,我发现了抽象的东西 类 :D 。不,我的想法是让 Node 抽象,Product 和 Category 扩展 Node,因为:

类别的名称和 toString 有 setter 和 getter 产品具有 setter 和 getter 名称和 ID(当然)和 toString。

Setter、getter 和 toString for Name 是相同的。 Product 的构造函数有所不同,因为它还设置了 ID。

所以, 那样会更好吗? 我可以创建一个节点,然后在输入后说 -> 这个节点来自类别

你不能只创建一个抽象的节点。

您应该获取输入,其中可能是要创建的类型,并为该类型创建适当的非抽象 class。

或者,您可以将它们创建为类别,如果用户键入一个 Id,则创建一个新产品并将数据从第一个对象复制到第二个对象。但这没有多大意义。

似乎类别应该只是产品的一部分。也就是说,您有一个类别 class 和一个具有两个属性的产品 class:类别 class 和 id。这样,您可以从图表上的任何点创建一个类别,然后如果它是一个产品,则将它传递给第二个构造函数以给它一个 id。

我认为这应该是一个抽象方法验证每个节点类型都可以独立实现。

Node 提示这是您正在浏览的状态图。也许您想要一种在进入或离开该状态时触发的方法。每种类型都可以将他们需要的任何东西放入其中。接口和策略模式将在这里提供帮助。

将图表与已完成的内容分开。