gpt4 book ai didi

java - 创建抽象方法而不固定其参数类型

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:05 25 4
gpt4 key购买 nike

我正在尝试实现一个类结构,我可以在其中创建不同类型的框对象。这些类型是:正方形、圆形、矩形和六边形

对于抽象父class Box,我想指定一个必须在所有子对象中实现的setDimensions()方法。

但是,所有对象的尺寸参数都不同(高度除外):

圆形具有直径矩形具有宽度和长度六边形正方形具有相同大小的边

是否可以定义一个可以处理此类作业的接口(interface)/抽象方法?

//编辑:这是一个编程作业。显然,所有类都有合适的构造函数,但该程序“模拟”了一个项目,其中设计模式的实现应该是有用的。我正在尝试应用 prototype 模式,在该模式中,您克隆一个基本框并根据我想要放入新框的另一个框设置参数。我知道这不是一个非常好的例子,但我们必须以这种方式解决它。另外,工厂模式也是一种选择,但我想避免编写太多工厂类。

最佳答案

这是我的两分钱。

你可以在抽象父类(super class)中有这样的东西

public abstract void setDimensions(double... dim);

一个示例实现(矩形)将是

// expected params are width and height
public void setDimension(double... dim) {
if (dim.length != 2) {
throw new IllegalArgumentException("Two dimensions expected, width ang height!");
}
...
}

你会这样调用它

Rectangle rec = new Rectangle();
rec.setDimensions(1.5, 2.8);
// rec.setDimensions(1.0); would throw IllegalArgumentException

限制是您必须知道必须提供哪些参数,如果您错了,您将在运行时得到 IllegalArgumentException,而不是编译器错误。

关于java - 创建抽象方法而不固定其参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27404911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com