2016-06-26 10 views
0

Ich muss auf den Inhalt eines class in diesem Fall zugreifen: ParkingMeter über die Parameter einer anderen Methode in einer anderen Klasse: public static void checkTheCar(ParkedCar pc, ParkingMeter pm) aber nicht sicher, wie das zu tun ist. Die Methode checkTheCar muss eine ganze Zahl von ParkingMeter abrufen und prüfen, ob sie im richtigen Bereich liegt. jeder Rat wird geschätzt.Zugriff auf Inhalte einer Klasse über Parameter in 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 

    } 

    } 

Antwort

0

Klasse Design einige Arbeit braucht. 4 Dinge für Anfänger ... 1) Kapselung von Instanzdaten - private Instanz vars mit Getter/Setter 2) benutzen Sie camelCase für Ihre Variablennamen 3) Bitte beachten Sie die Änderungen an der Art und Weise, wie Sie Ihre Daten in der Parkuhr eingerichtet haben Klasse. 4) eine toString() - Methode in Ihrer ParkedCar-Klasse hinzugefügt, um das Ausdrucken eines Ergebnisses in Ihrem Hauptprogramm zu erleichtern.

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

große Antwort, aber ich fragte mich, warum Sie '@ Override' Dank verwendet haben. – Ronald

+0

@Ronald: Weil toString() eine geerbte Methode von Object ist und hier überschrieben wird. Diese Annotation gibt dies an. Es ist zwar nicht erforderlich, den Code zur Kompilierung des Codes zu verwenden (obwohl einige andere Annotationen dies erfordern). Es empfiehlt sich jedoch, diese Annotation immer dann zu verwenden, wenn Methoden aus vererbten Klassen oder Interfaces überschrieben werden. –

+0

@Ronald: Sollte Getter/Setter wahrscheinlich auch zu ParkedCar hinzufügen, um das Design konsistent zu machen. –

0

Sie können eine öffentliche Methode machen getTime am ParkingMeter Klasse

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; 
}} 

Und im checkTheCar Sie verwenden es wie folgt aus:

public static void checkTheCar(ParkedCar pc, ParkingMeter pm){ 
    int time = pm.getTime(); 
} 
Verwandte Themen