2017-06-03 2 views
-6

my workZugriff auf eine Klasse aus einer anderen Klasse?

(Bild oben) Ich versuche, die Food.calories oder Food.carbs vom Fram1.java zuzugreifen, aber es ist zu lassen Sie mich nicht. Kann mir jemand sagen warum?

Detaillierte Informationen ... Ich versuche, Java zu üben, indem ich einen Kalorienzähler programmieren, und das Frame1 ist eine GUI-Klasse. Ich versuche, eine andere Klasse zu schreiben, um alle Nahrungsmittel zusammen mit ihrer Menge an Kohlenhydraten ... usw. als ihre Attribute zu setzen. Die Beantwortung der ersten Frage wird ausreichen, aber alle Tipps anderer Wege werden sehr geschätzt. Vielen Dank!

+2

Willkommen bei Stack Overflow. Bitte sehen Sie sich [Tour] (https://stackoverflow.com/tour) und [Fragen] (https://stackoverflow.com/help/asking) an. – Shiro

+1

Bitte keine Bilder posten, den vollständigen Code hier posten. – WilomGfx

+1

Wir können Ihren anderen Code nicht sehen, wie sollen wir das beantworten? –

Antwort

0

Erstens, Kalorien ist kein Feld innerhalb der Food-Klasse.

Zweitens behandeln Sie die Kohlenhydrate Feld, als ob es waren statisch.

  • statische Variablen werden von der Klasse gehört.
  • Nicht statische Variablen gehören den Klasseninstanzen.

Sie die Felder in der Lebensmittelklasse statische wie folgt machen könnten:

public static int cals, carbs, fat, protein;

Wenn Sie jedoch mehr Lebensmittel in Ihrem System benötigen, müssen Sie erstellen Instanzen der Lebensmittelklasse. Außerdem könnte es hilfreich sein, wenn Ihr Konstruktor Parameter zum Einstellen der Felder hätte und nicht jedes Nahrungsmittel mit 10 von jedem Merkmal.

Egal, hier ist ein Beispiel für Instanziierung:

public class Frame1 
{ 
    private Food genericFood; 

    public Frame1() 
    { 
     genericFood = new Food(); 
     System.out.println(genericFood.cals); 
    } 
} 

Da Sie eine Instanz der Lebensmittelklasse erstellen, würden Sie die statische Typisierung nicht benötigen.

Darüber hinaus empfehle ich in Kapselung zu suchen.

Verwandte Themen