2017-07-11 3 views
2

Ich habe 3 Klassen Test, Factory und TV - Factory zielt darauf ab, Fernseher zu erstellen (Klassen sind unten enthalten).Zugriff auf Objekteigenschaften, wenn das Objekt in der Hauptmethode über einen anderen Klassenkonstruktor erstellt wird

Wie kann ich auf Eigenschaften eines neuen Fernsehers zugreifen oder diese bearbeiten, der in der Hauptmethode der Testklasse erstellt wurde (über den TV-Klassenkonstruktor, der von der Factory-Methode in der Testklasse aufgerufen wird).

public class TV { 

    private int productionYear; 
    private double price; 

    public TV (int productionYear, double price){ 
     this.productionYear = productionYear; 
     this.price = price; 
    } 

} 

public class Factory { 

    public static int numberOfTV = 0; 


    public void produceTV(int a, double b){ 
     TV tv = new TV(a,b); 
     numberOfTV++; 
    } 


    public void printItems(){ 
     System.out.println("Number of TVs is: " + numberOfTV); 

    } 
} 

public class Test { 

    public static void main(String[] args) { 

     Factory tvFactory = new Factory(); 
     tvFactory.produceTV(2001, 399); 
     tvFactory.printItems(); 

    } 
} 
+4

Ihre 'produceTv'-Methode sollte * das neu erstellte Fernsehgerät * zurückgeben. Dann können Sie 'TV tv = tvFactory.produceTV (2001, 399);' und Sie können 'tv' danach verwenden. –

+1

hinzufügen Getter und Setter-Funktionen in 'TV' Klasse und ändern Sie ihre Werte mit diesen Methoden –

Antwort

2
public class TV { 

    private int productionYear; 
    private double price; 

    public TV(int productionYear, double price) { 
     this.productionYear = productionYear; 
     this.price = price; 
    } 

    public int getProductionYear() { 
     return productionYear; 
    } 

    public void setProductionYear(int productionYear) { 
     this.productionYear = productionYear; 
    } 

    public double getPrice() { 
     return price; 
    } 

    public void setPrice(double price) { 
     this.price = price; 
    } 
} 

public class Factory { 

    public static int numberOfTV = 0; 


    public TV produceTV(int a, double b) { 
     TV tv = new TV(a, b); 
     numberOfTV++; 
     return tv; 
    } 


    public void printItems() { 
     System.out.println("Number of TVs is: " + numberOfTV); 

    } 
} 

public class Test { 

    public static void main(String[] args) { 

     Factory tvFactory = new Factory(); 
     TV tv = tvFactory.produceTV(2001, 399); 
     tvFactory.printItems(); 

     // Do manipulation with tv reference here 

    } 
} 
0

Ihr Problem ist, dass Ihre Factory-Klasse produziert TVs aber nie Schiffe sie überall.

Um ein Objekt zu manipulieren, benötigen Sie einen Verweis darauf. Lassen Sie einfach die produceTV-Methode den produzierten Fernseher zurückgeben.

public TV produceTV(int a, double b){ 
    numberOfTV++; 
    return new TV(a,b);  
} 

Jetzt erstellen Sie eine Referenz, die nie verwendet wird; Am wahrscheinlichsten wird der Compiler die TV-Objekt-Erstellung eliminieren.

Verwandte Themen