gpt4 book ai didi

java - 持有多个继承其方法的实例的类

转载 作者:行者123 更新时间:2023-12-01 19:09:17 25 4
gpt4 key购买 nike

我对 Java 还很陌生,所以我可能使用了不正确的术语。我正在尝试将一个类优雅地扩展到一个新类,该新类包含父类(super class)的多个实例。例如,假设我有一个类

class Rose{
String smell;
Rose(String smell){this.smell=smell;}
void sniff(){ println("smells "+smell);}
}

我想定义一个类......

class Bouquet extends Rose{
ArrayList<Rose> roses;
...
}

拿着多朵玫瑰。我的实际代码有大约 20 个方法,对于其中大多数方法,扩展方法是

void sniff(){
for( Rose one: roses) one.sniff();
}

有没有一种方法可以构建bouquet,这样我就不需要显式定义这些愚蠢的循环?我不受 ArrayList 的束缚,如果可以的话,我什至可以创建一个新的父类(super class)。但是,重要的是我可以向外部编写的方法发送 bouquet 而不是 rose 参数。

编辑:哈哈,我觉得我的花比喻是一个很大的失败。 :)但是你的意见很好;你们已经澄清了我的想法。

在我的实际问题中,有一组操作定义如何将基类的实例一起添加到基类的新实例中。也许更好的比喻是将许多小织物股扭在一起形成一根绳子。外部方法应该对绳索和股线进行完全相同的处理。

似乎 extends 是错误的,还有其他建议吗?

最佳答案

你真的不需要伸出玫瑰花束。仅当存在“IS A”关系时才进行扩展,就像您有“花”类并且“玫瑰是一朵花”一样。但花束不是玫瑰。理想情况下,您应该有一个包含许多玫瑰的花束类(class)。如果存在 1:N 关系,那么您将必须循环才能获取各个项目。

关于java - 持有多个继承其方法的实例的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8830868/

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