【问题标题】:How to control the properties of multiple objects?如何控制多个对象的属性?
【发布时间】:2015-03-24 13:08:51
【问题描述】:

我正在使用 OOP 进行课堂作业,而且我还在学习基础知识,我来问你如何在有多个对象的情况下引用一个对象的属性。

public class Shirts
{
  private static int shirtSize;
  private static boolean sleeves;
  private static String color;
  private static String pattern;
  private static double price;

  public Shirts(int size, boolean sleeve, String hue, String design, double cost){
    shirtSize = size;
    sleeves = sleeve;
    color = hue;
    pattern = design;
    price = cost;
  }

我的问题是,如果我创建第二个对象,我将无法再引用第一个对象的属性,因为一旦创建了第二个对象,衬衫类中的所有变量都会被赋值 new 价值观。

Shirts testA = new Shirts(10,true,"green","stripes",35.00);
Shirts testB = new Shirts(11,false,"orange","plain",33.00);

有没有快速的解决方法?

【问题讨论】:

    标签: java oop properties constructor reference


    【解决方案1】:

    Shirts 类中的字段中删除static 关键字。

    【讨论】:

    • 这有所帮助,但是,我收到一条错误消息,指出我无法对非静态变量进行静态引用。 '返回衬衫尺码;'与我的其他返回语句一起显示错误。
    • @MichaelFreaney 从您发布的代码中,没有办法解决这个问题。请使用出现此错误的相关代码更新帖子,我将更新我的答案以解释如何修复它。
    【解决方案2】:

    静态是类成员。所以 static 将在类级别上工作。通过消除静电,您将解决您的问题。

    Good reference 关于 oracle 的“静态”

    【讨论】:

      【解决方案3】:

      如果您将变量定义为 static,则该类的所有 instances 共享相同的值。因此,您的所有实例共享静态字段。移除 static 关键字并将它们设为实例级字段,以便它们对于每个实例都是唯一的。

      【讨论】:

        【解决方案4】:

        请记住,static 修饰符意味着属性属于类,而不是实例!因此,所有实例(调用构造函数时得到的)将共享相同的静态属性值。

        我希望这个答案有助于理解问题所在,而不仅仅是让它这次起作用。

        【讨论】:

          猜你喜欢
          • 2017-10-23
          • 2014-08-17
          • 1970-01-01
          • 1970-01-01
          • 2012-03-10
          • 2014-07-06
          • 2020-06-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多