2017-04-20 4 views
-1

In meiner Aufgabe, bin ich eine Food Klasse wie folgt gegeben:Wie lege ich Standardwerte für Instanzvariablen fest?

class Food { 
    private String name; // name of food 
    private int calPerServing; // calories per serving 
    // must be >= 0 
    // min storage temperature // must be >= 0. 
    // max storage temperature // must be <= 100. 
    private float minTemp; private float maxTemp; 
    int getCalories() { 
     return calPerServing; 
    } 
} 

Und ich bin mit diesem Teil der Zuordnung Probleme mit:

einen Konstruktor schreiben Setzen Sie für die Klasse Food den Standardwert name auf "Pie", den Standardwert calPerServing auf 500, den Standardwert minTemp auf 25 und der Standardwert maxTemp bis 75.

Wie setze ich Standardwerte für name, calPerServing, etc.?

+0

Probieren Sie einfach einen Code und wenn Sie scheitern, fragen Sie hier nach Erfahrungen. –

Antwort

4

(Ich bin überrascht zu Seite drei der Suchergebnisse zu erhalten, ohne eine einfache Version dieser Frage zu finden, zu verweisen.)


Sie haben zwei Möglichkeiten für den Standardwert einer Instanzvariablen einstellen (manchmal auch eine „Instanz Feld“):

  1. ein i Verwenden nitializer auf der Erklärung.

  2. Verwenden einer Zuweisung in einem Konstruktor.

Say I Example und eine Instanzvariable answer dessen Standard sein sollte 42. Ich kann entweder eine Klasse:

// Example of #1 (initializer) 
class Example { 
    private int answer = 42; 
    // ... 
} 

oder

// Example of #2 (assignment within constructor) 
class Example { 
    private int answer; 

    Example() { 
     this.answer = 42; 
    } 
} 

Initialisierer (# 1) verarbeitet werden, während der Konstruktion vor jeder anderen Logik in Ihrem Konstruktor (aber nach dem Aufruf des Superklassenkonstruktors).

Welche Sie verwenden, hängt von der Klasse und in gewissem Maße vom persönlichen Stil ab. Wenn die Klasse mehrere Konstruktoren haben soll, aber ich möchte, dass answer standardmäßig auf 42 gesetzt wird, unabhängig davon, welcher Konstruktor verwendet wird, macht die Verwendung der Initialisierung Sinn, weil ich sie dann an einer Stelle ablege, anstatt sie in jeden Konstruktor zu schreiben. Wenn der Standardwert für answer davon abhängt, welcher Konstruktor verwendet wird, oder abhängig von einem Parameter, den der Konstruktor empfängt/empfängt, ist es sinnvoll, ihn im Konstruktor zu setzen.

In Ihrem speziellen Fall werden Sie aufgefordert, einen Konstruktor zu verwenden.

+0

Manchmal haben die einfachsten Fragen keine Antworten. Ich habe mich in derselben Situation wiedergefunden. Lol ... – BlackHatSamurai

0

Wenn Sie Standardwerte setzen, weisen Sie einfach einen Wert, wenn Sie die Variable deklarieren, wie so:

private String name = "Pie"; 
private int calPerServing = 500; 

und es so. Wenn Sie diese Variablen überschreiben möchten, können Sie. Alternativ können Sie es im Konstruktor tun wie so:

class Food { 
    private String name; // name of food 
    private int calPerServing; // 

    public Food(){ 
     this.name = "Pie"; 
     this.calPerServing = 500; 
    } 

} 
Verwandte Themen