gpt4 book ai didi

java编程和静态类

转载 作者:行者123 更新时间:2023-12-02 04:00:38 25 4
gpt4 key购买 nike

我正在尝试理解Java中的类和变量系统,但我想我还没有考虑java...我设法得到了我想要的东西,但我觉得它的方式不对。你能帮我做好事吗?最好的是我向您展示一个代码示例:

public class Food {
static Product tomato = new Product("tomato")

public static void main(String[] args) {
Order order = new Order(2);
System.out.println(order.cost);
}

static class Order {
double cost;

Order(int nbTomato) {
cost = tomate.prix * nbTomato;
}
}
}

然后在另一个文件中

public class Product {
String nom;
double prix;

public Product(String name_,int price_) {
name = name_;
price = price_;
}
}

理想情况下,我希望“番茄”(以及其他此类变量:茄子等)在另一个文件中定义,由多个类使用,并且它们不会被进一步修改。它们仍然共享一些字段(价格、名称……),因此它们都应该从给定的类派生。

最佳答案

通常在这些情况下你必须像现实生活中一样思考。将您的问题想象成现实生活中的情况,您就会明白要实现什么以及您需要什么。例如

您需要能够使用产品。这意味着拥有一个类产品是可以的。但是您能够直接使用产品吗?或者您只会使用产品的衍生品(橙子、苹果、香蕉)?这意味着使用“抽象类”。

既然您使用了抽象类,您就永远无法接触实际产品,因为您不能拥有它的实例,而只能拥有产品类型的实例。现在你问自己:我是否需要一种派生(扩展)产品类的水果,并且每种水果都有其自己的特殊特性?或者我不关心并认为苹果和橙子都是水果,只是名称不同。

如果你想要一个橙子并且能够调用 Orange.peel() ,并且想要一个苹果并且能够调用 apple.rott() ,那么你应该为 Apples、Oranges 等创建不同的类..,每一个扩展产品,每一个里面都有自己的方法。如果没有,你可以创建一个Fruit类,扩展product,并且每个水果都不同于fruit.setName(String name)

现在,您希望能够订购一些东西。您创建的 Order 类没问题,但您永远不知道如何区分一种水果和另一种水果。因此,您不必创建单独的方法“orderOranges(number)、orderBananas(number)”,而是创建一个接受任何 Product 的通用方法

order.orderProducts (List<Product> products)

该方法应该如下所示

public int orderProducts (List<Product> products) {
int price = 0;
for (Product prod : products) {
price += prod.getPrice();
}
return price;
}

此方法类似于将杂货带到结帐部分。现在,您可以添加任何您想要的内容。数量格式,或任何您想要的格式。

如果您希望能够从程序中的任何位置访问您的产品,您应该(实际上)创建一个静态类 Basket,其中包含产品列表,您可以在其中 .add(Product), throwOut(产品),您可以将此篮子送到结帐处 order.checkOut(购物篮);一切都与现实相似。我希望这是您想要的指导。

关于java编程和静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960979/

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