2016-06-26 2 views
0

Мне нужно получить доступ к содержимому class в этом случае: ParkingMeter через параметры другого метода в другом классе: public static void checkTheCar(ParkedCar pc, ParkingMeter pm), но не знаете, как это сделать. метод checkTheCar должен получить целое число от ParkingMeter и проверить, находится ли он в правом диапазоне. любой совет приветствуется.Доступ к содержимому класса через параметр в java?

public static class ParkingMeter { 

    int time; 

    public ParkingMeter(int hours,int minutes){ 
     time = (getMinutes(hours,minutes)); 

    } 
    private int getMinutes(int hours, int minutes){ 
      int time = (hours * 60) + minutes; 
     return time; 
     } 
} 

public static class ParkedCar{ 

    String CompanyName;    // Company name 
    String Model;     // Car model 
    String Color;     // Car color 
    String PlateNumber;    // License plate number 
    String Minutes;     // number of minutes parked 

    public ParkedCar(String companyName, String model, String color,String plate, String minutes){ 
     CompanyName = companyName; 
     Model = model; 
     Color = color; 
     PlateNumber = plate; 
     Minutes = minutes; 
    } 
} 
public static class PoliceOfficer{ 
    String OfficerName; 
    String BadgeNumber; 

    public PoliceOfficer(String name,String badge){ 
     OfficerName = name; 
     BadgeNumber = badge; 
    } 
    public static void checkTheCar(ParkedCar pc, ParkingMeter pm){ 
     // do something 

    } 

    } 

ответ

0

дизайн класса нуждается в некоторой доработке. 4 вещи для начинающих ... 1) Инкапсуляция данных экземпляра - частные экземпляры vars с getters/seters 2) использование camelCase в именах переменных 3) обратите внимание на изменения способа настройки/доступа к вашим данным на парковочном счетчике класс. 4) добавлен метод toString() в вашем классе ParkedCar, чтобы было легко распечатать результат в вашей основной программе.

public class Parking { 

    public static void main(String[] args) { 
     //PoliceOfficer po = new PoliceOfficer("John Policeman", "4599BDG"); 
     ParkedCar pc = new ParkedCar("Lexus", "IS250", "White", "7GHK111", 90); 
     ParkingMeter pm = new ParkingMeter(2, 30); 
     PoliceOfficer.checkTheCar(pc, pm); 
    } 

    public static class ParkingMeter { 

     private int time, hours, minutes; 

     public ParkingMeter(int hours, int minutes) { 
      this.hours = hours; 
      this.minutes = minutes; 
      setTime(hours, minutes); 
     } 

     private void setTime(int hours, int minutes) { 
      this.time = (hours * 60) + minutes; 
     } 
     public int getTime() { 
      return time; 
     } 

     public int getHours() { 
      return hours; 
     } 
     public void setHours(int hours) { 
      this.hours = hours; 
     } 

     public int getMinutes() { 
      return minutes; 
     } 
     public void setMinutes(int minutes) { 
      this.minutes = minutes; 
     } 

    } 

    public static class ParkedCar { 

     private String make; // Company name 
     private String model; // Car model 
     private String color; // Car color 
     private String plateNum; // License plate number 
     private int minutes; // number of minutes parked 

     public ParkedCar(String make, String model, String color, 
      String plate, int minutes) { 
      this.make = make; 
      this.model = model; 
      this.color = color; 
      this.plateNum = plate; 
      this.minutes = minutes; 
     } 

     @Override 
     public String toString() { 
      return color + " " + make + " " + model + ", plateNum=" + plateNum + " "; 
     } 

    } 

    public static class PoliceOfficer { 
     private String officerName; 
     private String badgeNumber; 

     public PoliceOfficer(String name, String badge) { 
      this.officerName = name; 
      this.badgeNumber = badge; 
     } 

     public String getOfficerName() { 
      return officerName; 
     } 

     public void setOfficerName(String officerName) { 
      this.officerName = officerName; 
     } 

     public String getBadgeNumber() { 
      return badgeNumber; 
     } 

     public void setBadgeNumber(String badgeNumber) { 
      this.badgeNumber = badgeNumber; 
     } 

     public static void checkTheCar(ParkedCar pc, ParkingMeter pm) { 
      System.out.println(pc.toString() + " has been parked for : " + pm.getTime() + " minutes"); 
     } 
    } 

} 
+0

отличный ответ, но мне было интересно, почему вы использовали '@ Override' спасибо. – Ronald

+0

@Ronald: Потому что toString() является унаследованным методом от Object и здесь переопределяется. Эта аннотация указывает это. Хотя нет необходимости использовать его для компиляции кода (хотя для этого требуются некоторые другие аннотации), лучше всего использовать эту аннотацию при переопределении любых методов из унаследованных классов или интерфейсов. –

+0

@ Ronald: Возможно, следует добавить геттеры/сеттеры в ParkedCar, чтобы сделать проект согласованным. –

0

Вы можете сделать публичный метод getTime на ParkingMeter класса

public static class ParkingMeter { 

int time; 

public int getTime() { 
    return time; 
} 

public ParkingMeter(int hours,int minutes){ 
    time = (getMinutes(hours,minutes)); 

} 
private int getMinutes(int hours, int minutes){ 
    int time = (hours * 60) + minutes; 
    return time; 
}} 

И в checkTheCar вы используете его так:

public static void checkTheCar(ParkedCar pc, ParkingMeter pm){ 
    int time = pm.getTime(); 
} 
Смежные вопросы