当前位置: 首页 > 知识库问答 >
问题:

父母和孩子之间的设计建议?

冷翼
2023-03-14

我正在做一个物理模拟。

我有一个ArrayList,它保存模拟中的所有对象。我有一个父类:Shape,还有两个子类:CircleRectangle

当然,父类没有draw()方法,但每个子类都有。因此,当我在列表中循环绘制每个元素时,它不允许我这样做,因为Shape类中没有draw()方法(因为我将列表定义为ArrayList)

有没有一种方法可以很好地解决这个问题?


共有3个答案

幸乐湛
2023-03-14

我会这样做的。

一个名为Shapes的类,它有一个列表字段

郦祯
2023-03-14

它似乎为Shape类提供了一个抽象方法,在这个类中,所有子类共享一个共同的行为,这对于手头的任务来说是最好的。

考虑这是<代码>形状<代码>类:

public abstract class Shapes{
    public abstract void Draw();
}

矩形类:

public class Rectangle extends Shapes{
    public void Draw(){
        System.out.println("Rectangle");
    }
}

圆圈类:

public class Circle extends Shapes{
    public void Draw(){
        System.out.println("Circle");
    }
}

现在考虑到CircleRectgle的类型都是Shape,您可以创建类型为Circle或/和Rectgle的对象,将它们添加到ArrayList中,迭代它,并调用每个对象上的Draw()方法如下:

ArrayList<Shapes> shapes = new ArrayList<>();
shapes.add(new Circle());
shapes.add(new Rectangle());
shapes.forEach(Shapes::Draw);

对每个对象调用Draw()方法时的结果:

Circle
Rectangle
松旻
2023-03-14

前进的最简洁的方法是使用接口。

public interface Shape {
    void draw();
}

public class Rectangle implements Shape {
    @Override
    public void draw() { // draw rect }
}

public class Circle implements Shape {
    @Override
    public void draw() { // draw circle }
}

如果您希望Shape与其子类共享一些其他逻辑,则可以使用任何附加代码创建一个实现Shape的AbstractShape类,并使用该抽象类扩展子类。

 类似资料:
  • 我已经将组件拆分为父元素和子元素。我通过状态将数据从父级传递给子级,但收到未捕获的类型错误:无法读取属性'ImageSource'的空,这是奇怪的,因为我遵循与应用程序的另一个元素相同的过程。我也按照组件和道具留档,但仍然有点难倒。 如果我已经定义了状态,设置了状态,并将其作为属性添加到子级,为什么状态仍然为null?

  • 我一直在将代码从JIT转换到D3,并使用树布局。我已从中复制了代码http://mbostock.github.com/d3/talk/20111018/tree.html使用我的树数据,但我想做更多。 在我的例子中,我想创建子节点,这些子节点合并回一个较低级别的父节点,我意识到这更像是一个有向图结构,但是希望树能够适应这一点(即注意子节点之间的公共id应该合并)。 因此,基本上,一棵树在从父母到

  • 问题内容: 最初,我一直在尝试获取父母的名单以及每个父母的一个最近的孩子。我已经知道如何使用以下查询 但是问题是,结果不包括没有孩子的父母。添加也无济于事。所以我想我可以对所有没有孩子的父母进行查询,然后将这两个查询合并为一个查询。但是我在建立这样的查询时遇到了麻烦。将不胜感激任何建议。 问题答案: 这是您的查询:

  • 问题内容: 我在 MySQL中* 有如下的 注释 表: * 用户可以添加 新的 注释,因为它们不是其他注释的子对象,所以将没有parent_id。用户还可以 回复 通过先前方法添加的评论,因此它们是主要评论的子级,例如在第二层级上。该 PARENT_ID 列表示父评论的ID,如果存在的话。如果注释没有父母,则默认 parent_id 为-1。 话虽如此,我想查询表中的所有注释,每个父项后跟其子级,

  • 重要提示:如果你正在阅读这篇文章,那么也考虑看看这篇文章进行深入讨论。 这是一个非常常见的做法/情况/要求,其中一个父级的子级可以迁移到另一个父级。如果在这种关系的反面将设置为会发生什么? 考虑作为示例,任何简单的一对多关系如下。 反面(部门) : 拥有方(员工): 在合并如下操作/动作时(其中< code>department是由客户端提供的分离实体), 当然,添加和删除员工可能最好使用关联实体

  • 问题内容: 我试图了解什么对我来说似乎是意外的行为: 我在容器内有一个最大高度为100%的元素,该元素也使用最大高度,但是,出乎意料的是,子代溢出了父代: 但是,如果给定父级的显式高度,则此问题已解决: 有谁知道为什么孩子在第一个例子中不尊重父母的最大身高?为什么需要一个明确的高度? 问题答案: 当您指定的百分比上一个孩子,这是父母的实际高度的百分比,而不是父母的,奇怪的。同样适用于。 因此,如果