Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java编程和静态类_Java_Class - Fatal编程技术网

java编程和静态类

java编程和静态类,java,class,Java,Class,我试图理解Java中的类和变量系统,但我认为我还没有考虑Java…我设法得到了我想要的,但我觉得这不是正确的方式。你能帮我把它做好吗?最好的是,我向您展示了一个代码示例: public class Food { static Product tomato = new Product("tomato") public static void main(String[] args) { Order order = new Order(2); Syst

我试图理解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_;
    }
}

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

在您的示例中,有几点需要理解:

  • 西红柿将是您的食物类中的一个静态变量-这意味着对于任何食物实例只有一个西红柿(对于所有实例只有一个西红柿(它们共享同一个西红柿))
  • 在Food类中有一个静态的类顺序
如果您真的想让tomato像一个全局变量一样可访问,那么最好将其公开声明如下:

public static Product tomato = new Product("tomato", 42);
将常量声明为最终值和大写惯例是一种很好的做法:

public static final Product TOMATO = new Product("tomato", 42);
它可以作为食物类的静态变量访问,如下所示:

Product myTomato = Food.TOMATO;
当您说它应该可以通过方法顺序访问时,您可以这样做(在任何类中):


在您的示例中,有几点需要理解:

  • 西红柿将是您的食物类中的一个静态变量-这意味着对于任何食物实例只有一个西红柿(对于所有实例只有一个西红柿(它们共享同一个西红柿))
  • 在Food类中有一个静态的类顺序
如果您真的想让tomato像一个全局变量一样可访问,那么最好将其公开声明如下:

public static Product tomato = new Product("tomato", 42);
将常量声明为最终值和大写惯例是一种很好的做法:

public static final Product TOMATO = new Product("tomato", 42);
它可以作为食物类的静态变量访问,如下所示:

Product myTomato = Food.TOMATO;
当您说它应该可以通过方法顺序访问时,您可以这样做(在任何类中):


通常在这种情况下,你必须像现实生活中那样思考。把你的问题想象成现实生活中的情况,你就会明白应该实施什么,需要什么。例如

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

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

如果您想要一个桔子并能够调用orange.peel(),想要一个apple并能够调用apple.rott(),那么您应该为apple、Oranges等创建不同的类,每个扩展产品内部都有自己的方法。 如果没有,您可以创建一个类Fruit,扩展product,以及每个不同于Fruit.setName(字符串名)的Fruit

现在,您希望能够订购一些东西。您创建的Order类是可以的,但是您永远不会知道如何区分不同的水果。因此,您不需要创建单独的方法“orderOranges(number)、orderBananas(number)”,而是创建一个接受任何产品的通用方法

order.orderProducts (List<Product> products)
order.orderProducts(列出产品)
方法应该是这样的

public int orderProducts (List<Product> products) {
    int price = 0;
    for (Product prod : products) {
        price += prod.getPrice();
    }
    return price;
}
public int orderProducts(列出产品){
国际价格=0;
用于(产品生产:产品){
价格+=产品getPrice();
}
退货价格;
}
这种方法类似于把你的食品带到结账区。 现在,您可以添加任何您想要的内容。数量格式,或任何你想要的

如果您希望能够从程序中的任何位置访问您的产品,您应该(实际上)创建一个静态类篮,其中包含一个产品列表,您可以在其中添加(产品)、发送(产品),然后将此篮发送到签出 订单.结帐(购物篮);
一切都与现实相似。我希望这就是你希望得到的指导。

通常在这种情况下,你必须像现实生活中那样思考。把你的问题想象成现实生活中的情况,你就会明白应该实施什么,需要什么。例如

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

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

如果您想要一个桔子并能够调用orange.peel(),想要一个apple并能够调用apple.rott(),那么您应该为apple、Oranges等创建不同的类,每个扩展产品内部都有自己的方法。 如果没有,您可以创建一个类Fruit,扩展product,以及每个不同于Fruit.setName(字符串名)的Fruit

现在,您希望能够订购一些东西。您创建的Order类是可以的,但是您永远不会知道如何区分不同的水果。因此,与其创建单独的方法“orderOranges(number)”,不如创建OrderBanana(