我是编程新手。我做了这个构造函数:
public Attraction(int baseprice, String name) {
this.baseprice = baseprice;
this.name = name;
}
我已经在不同的类中初始化了构造函数:
Attraction attraction = new Attraction(ridename, price)
我想在第三个类中使用这些数据,而不必传入参数,所以它看起来像这样:
Attraction attraction = new Attraction()
这将允许我使用 getter 和 setter 来更改吸引力对象中的现有数据。但是,目前这是不可能的,因为即使我想使用现有数据,我也必须传递名称和价格。
谁能告诉我该怎么做?任何帮助,将不胜感激。
最佳答案
你似乎误解了java的工作原理。
用于创建新对象的关键字的 new
名称不是随机选择的:每次您编写 new Attraction([don't Matter What Gos Here])
,一个新对象就制作完成了(这个对象就是 Attraction 的“一个实例”)。每个单独的对象都有自己的一组字段。也不存在“一个实例来统治它们”——没有办法直接说:“给我最后创建的实例”或“给我一个实例;我从不希望存在多个实例”。
您需要传递引用:
Attraction a = new Attraction(ridename, price);
... do stuff
someOtherMethod(a); // pass 'a' around via a parameter, or...
return a; // pass 'a' around by returning it, or...
this.someFieldOfTypeAttaction = a; // pass 'a' around by assigning it to a field.
有很多方法可以做到这一点。
您还可以编程“给我最后创建的景点”,甚至“永远只有一个景点”,但这在这里听起来并不正确:您肯定计划拥有许多不同的景点,并且在一般来说,全局可变状态会导致意大利面条式代码难以调试并且容易失败。
关于Java 不使用参数调用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693812/