[英]java programming and static classes
我试图理解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等),并由多个类使用,并且它们将不再进行修改。 它们仍然共享某些字段(价格,名称等),因此它们都应从给定的类派生。
在您的示例中,需要了解以下几点:
如果您真的想让番茄成为可访问的lika全局变量,最好将其公开声明为:
public static Product tomato = new Product("tomato", 42);
将常量声明为final和大写形式的约定是一种好习惯:
public static final Product TOMATO = new Product("tomato", 42);
可以将其作为食品类别的静态变量进行访问,如下所示:
Product myTomato = Food.TOMATO;
当您说应该可以通过方法顺序访问它时,可以执行以下操作(在anyclass中):
public void order() {
Product myTomato = Food.TOMATO;
// Your code here
}
通常在这些情况下,您必须像现实生活中那样思考。 将您的问题想象成现实生活中的情况,您将了解要实施的内容和所需的内容。 例如
您需要能够使用产品。 这意味着有一个Class产品是可以的。 但是,您将能够直接使用产品吗? 还是只使用某种产品的衍生物(橘子,苹果,香蕉)? 这意味着使用“抽象类”。
现在,您使用抽象类,您将永远无法触摸实际的产品,因为您不能拥有它的实例,而只能拥有产品类型的实例。 现在您问自己:我是否需要一种派生(扩展)类Product的水果,并且每种水果都有其自己的特殊特性? 还是我不在乎并认为苹果和橙子都是水果,仅在名称上有所不同。
如果您想拥有一个橙子并且能够调用orange.peel(),并且拥有一个苹果并且能够调用apple.rott(),那么您应该为Apples,Oranges等创建不同的类,每种扩展产品,每个产品内部都有自己的方法。 如果没有,则可以只创建一个类Fruit,扩展产品,并且每个水果都不同于fruit.setName(String name)
现在,您希望能够订购一些东西。 您创建的Order类还可以,但是您永远不会知道如何将一种水果与另一种水果区别开。 因此,您无需创建单独的方法“ orderOranges(number),orderBananas(number)”,而是创建一个接受任何产品的通用方法
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(Product),您可以将此购物篮发送到结帐单。checkOut(购物篮); 一切都类似于现实的运作方式。 我希望这是您所希望的指导。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.