Java - 在自己的类中引用对象数据?

时间:2014-04-28 00:48:57

标签: java class object reference

我对我的项目有疑问:

我有四个班级档案,一个存储有关汽车特性的信息以及停放的时间,另一个存储他们从停车计时器购买了多少时间的数据,第三个是根据他们是否超过他们的购买时间的官员类别,要么通过使用第四类返回null或创建停车罚单对象。

我的问题是,生成ParkingTicket对象的方法是在官员类中,停车票对象必须有3个参数:汽车对象,超过购买时间的分钟数和官员对象。但我不确定如何在自己的类中引用官方对象...我知道解决方案可能是微不足道的,但我似乎只是被难倒了。

我按照我的指示创建了一名军官的副本对象,但我不确定如何在军官级别中引用它。 (我有点愚蠢的时刻,并尝试使用复制构造函数的参数作为停车罚单对象的参数......)

有人能指出我正确的方向吗?我将在下面发布我的官员类代码和错误消息。感谢您的帮助!

// This class holds information about the Police Officer
public class PoliceOfficer {


   private String name;                   // Officer's name
   private String badgeNumber;            // Officer's badge #
   private int minutes;


   // Initialize PoliceOfficer object
   public PoliceOfficer(String offName, String badgeNum)
   {
      name = offName;
      badgeNumber = badgeNum;
   }


   // Create Officer copy object
   public PoliceOfficer(PoliceOfficer officer)
   {
      name = officer.name;
      badgeNumber = officer.badgeNumber;
   }

   // Set Officer name and badge number fields
   public void setOfficer(String pName, String pNumber)
   {
      name = pName;
      badgeNumber = pNumber;
   }


   // Method that executes Officer's car inspection vs. Parking meter time -
   //  returns null if time parked is less than minutes on the meter
   public ParkingTicket patrol(ParkedCar car, ParkingMeter meter)
   {
      if (car.getMinutes() > meter.getMinutesPurchased())
      {
         minutes = car.getMinutes() - meter.getMinutesPurchased();
         ParkingTicket ticket = new ParkingTicket(car, officer, minutes);
         return ticket;
      }
      else
         return null;
   }



   // Generate toString method for officer's info to be displayed on the ticket
   public String toString()
   {
      return "Name: " + name +
             "\nBadge Number: " + badgeNumber;
   }


}



PoliceOfficer.java:46: error: cannot find symbol
         ParkingTicket ticket = new ParkingTicket(car, officer, minutes);
                                                       ^
  symbol:   variable officer
  location: class PoliceOfficer
5 errors

 ----jGRASP wedge2: exit code for process is 1.
 ----jGRASP: operation complete.

1 个答案:

答案 0 :(得分:3)

只需使用this代表您所在目标的当前PoliceOfficer。例如:

// substitute *this* for the officer parameter
ParkingTicket ticket = new ParkingTicket(car, this, minutes); 

请注意,this引用您所在类的当前对象。请注意,如果您在内部类中并且尝试引用外部类的对象,则需要指定this你的意思是预先挂起类名。例如,如果您在PoliceOfficer类的内部类中并且希望引用当前的官员,则可以使用PoliceOfficer.this

相关问题