java编程和静态类

标签 java class

我正在尝试理解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/

相关文章:

ruby - 在 case 语句中使用类对象

java - 如何停止 Java 运行整个代码而不等待用户的 Gui 输入

java - 如何在生效日期更新用户?

java - java程序编译错误

java - 如何修复更新/插入时出现 jdbc4 重复条目错误

java - 在android中使用 Intent 与多个图像共享文本

javascript - 如何确定两个 ES6 类实例是否相等?

objective-c - 创建的对象数量

class - 如何从记录常量数组中引用类?

c++ - 我应该扩展 QT 小部件还是使用我自己的包含小部件的类作为成员?