Parameter von Konstruktor, der Superklassen-Konstruktor aufruft

mataze

Mitglied
grüß euch
um das themengebiet vererbung und polymorphie zu veranschaulichen, muss ich ein bisschen java code schreiben.
es gibt 3 ebenen bzw. generationen von klassen in diesem kontext:

Lebensmittel
Speise , Getraenke
Brot , Wurst , Wasser , Mate

(ja, der studentischen hilfkraft ist offensichtlich wirklich als zweites Getränk nach wasser "mate" eingefallen..)

die konstruktoren der 4 "jüngsten" klassen brauchen alle 2 parameter: String markenname, int menge. mit diesen beiden parametern ruft der konstruktor den konstruktor der superklasse (also je nach dem Speise oder Getraenke) auf, der die selben parameter braucht, und übergibt sie also an den superklassenkonstruktor. dieser superklassenkonstruktor ruft seinerseits wieder seinen superklassenkonstruktor auf, also den von Lebensmittel, und auch hier wieder parameterübergabe.

alles soweit kein problem, das programm steht, eine testklasse "Kuehlschrank" läuft auch fast problemlos. das einzige problem tritt in zusammenhang mit der klasse Brot auf, denn da gibt es eine besonderheit. der konstruktor von Brot braucht 2 parameter: int typ, int menge. wobei typ==0 bewirken soll, dass an den superklassenkonstrukor als name "Weißbrot" weitergeben wird. für typ==1 soll es "Schwarzbrot" sein, für typ==2 "Mischbrot" und für alles andere "Spezial-Brot".

ich hänge an folgender stelle: wenn der konstruktor einen (nicht parameterfreien) superkonstruktor aufrufen soll, dann muss das an erster stelle passieren. für Brot also in etwa so:

Java:
class Brot extends Speise{
public Brot(int typ, int menge){
super(name, menge);
}
}

selbstverständlich brauche ich jetzt noch einen code-fetzen, der "typ" per if-ketten in den jeweiligen String übersetzt, damit ich der super()-methode "name" mitgeben kann. ich hab das so gelöst:

Java:
super(name, menge);
if(typ==0){name="Weißbrot";}
else{
	if(typ==1){name="Schwarzbrot";}
	else{
		if(typ==2){name="Mischbrot";}
		else{name="Spezialbrot";}
	}
}

aber das funktioniert nicht wie erhofft, denn natürlich übergibt die methode erst "name" (also beim ersten durchgang "null") und ändert name dann in den entsprechenden brottyp. beim zweiten durchlauf wird dann also zb "Schwarzbrot" ausgespuckt, weil im ersten durchgang typ==1 war, und im dritten durchgang bekomme ich entsprechend den typ aus durchgang 2 etc.

ich bitte um hilfe!

ps, falls es wichtig sein sollte, hier der komplette code von Brot, Speise und Lebensmittel:
Java:
package aufg6;

public abstract class Lebensmittel {
	protected String name;
	protected int menge; // in Milliliter bzw. Gramm
	public Lebensmittel(String name, int menge) {
		this.name = name;
		this.menge = menge;
	}
	public abstract boolean essen();
	public abstract boolean trinken();
	public abstract String status();
}



...............................


package aufg6;

public class Speise extends Lebensmittel{
	protected int verzehreinheit;
	
	public Speise(String name, int menge){
		super(name, menge);
	}
	
	
	public boolean essen(int menge){
		if(this.menge>=menge){
			this.menge=this.menge-menge;
			return true;
		}
		else{
			return false;
		}
	}
	
	
	public boolean trinken(){
		return false;
	}
	
	public String status(){
		return getClass().getSimpleName() +"\n"
			+ name + "\n"
			+ menge+"g";
	}

}



.......................



package aufg6;

public class Brot extends Speise{
	protected static String name=new String();
	
	public Brot(int typ, int menge){
		super(name, menge);
		verzehreinheit=50;
		if(typ==0){
			name="Weißbrot";
		}
		else{
			if(typ==1){
				name="Schwarzbrot";
			}
			else{
				if(typ==2){
					name="Mischbrot";
				}
				else{
					name="Spezialbrot";
				}
			}
		}
	}
	
	public boolean essen(){
		if(menge>=verzehreinheit){
			essen(verzehreinheit);
			return true;
		}
		else{
		return false;
		}
	}
}
 

Natac

Bekanntes Mitglied
Du kannst im Konstruktor aber statische Methoden aufrufen. Folgendes Konstrukt wäre also denkbar:

Java:
public Brot(int type, int menge){
  super(getName(type),menge);
}

private static String getName(int type){
  // ... get name
}

Im übrigen sollten man
Code:
type
besser durch ein enum spezifizieren, als durch einen integer. Aber für das Beispiel mag das vielleicht noch gehen.
 
Zuletzt bearbeitet:

mataze

Mitglied
na klar.. so einfach..! danke dir!
finde diese int geschichte auch schlecht gelöst, aber is von der aufgabe vorgegeben.

problem gelöst, thread kann geschlossen werden, danke noch mal!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
M GUI JOptionPane - Parameter im Konstruktor festlegen? Java Basics - Anfänger-Themen 5
X Variable Parameter in Konstruktor Java Basics - Anfänger-Themen 7
E Konstruktor-Parameter Java Basics - Anfänger-Themen 13
S Konstruktor parameter Java Basics - Anfänger-Themen 4
J Thread-Parameter oder Konstruktor Java Basics - Anfänger-Themen 16
P Parameter aus Konstruktor an Methode/Funktion übergeben Java Basics - Anfänger-Themen 10
G Statischem Konstruktor Parameter übergeben Java Basics - Anfänger-Themen 6
A Konstruktor ohne Parameter Java Basics - Anfänger-Themen 15
C Interface Parameter und Rückgabewerte in Lambda Ausdrücken verwenden Java Basics - Anfänger-Themen 16
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
BeginnerJava "Weihnachtsbäume" anzeigen: Höhe als Parameter Java Basics - Anfänger-Themen 1
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
X Default Parameter Java Basics - Anfänger-Themen 20
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
D Best Practice Parameter int vs byte Java Basics - Anfänger-Themen 16
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
L Wie greife ich in der Subklasse auf die Parameter einer Methode der Superklasse zu ? Java Basics - Anfänger-Themen 15
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
P Parameter auf Datenformat überprüfen Java Basics - Anfänger-Themen 5
S Hamster Simulator rechnen lernen Parameter int Java Basics - Anfänger-Themen 6
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
C Java Methoden "Parameter" Problem Java Basics - Anfänger-Themen 16
W Parameter solange addieren bis 13 auftaucht Java Basics - Anfänger-Themen 11
L OOP Parameter mit der Draw-Methode übergeben Java Basics - Anfänger-Themen 11
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
L Methoden Übergabe von Parameter Java Basics - Anfänger-Themen 3
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 2
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 3
V Unbekannte Parameter Java Basics - Anfänger-Themen 1
J Input/Output Input als Parameter an Methoden übergeben Java Basics - Anfänger-Themen 23
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
A festgelegte Parameter Java Basics - Anfänger-Themen 11
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
D Interface Final für Parameter in überschriebenen Methoden? Java Basics - Anfänger-Themen 3
P Variablen Optionaler Parameter auf der Kommandozeile Java Basics - Anfänger-Themen 12
S Variable Parameter Java Basics - Anfänger-Themen 5
L Variablen Parameter bekommen Java Basics - Anfänger-Themen 13
M Methode mit Array als Parameter an Main übergeben Java Basics - Anfänger-Themen 1
B Webservice -> alle parameter bekommen von form Java Basics - Anfänger-Themen 2
K Klassenmethode mit übergebenen Parameter speichern Java Basics - Anfänger-Themen 7
I BigDecimal als Parameter verwenden Java Basics - Anfänger-Themen 3
J Parameter in main verwenden Java Basics - Anfänger-Themen 3
J Programm was üer Runtime.getRuntime gestartet wird erkennt String Parameter nicht Java Basics - Anfänger-Themen 0
T Parameter das übergeben wurde ändern? Java Basics - Anfänger-Themen 1
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
P Operatoren Parameter nicht auf null geprüft? Java Basics - Anfänger-Themen 16
D Name eines JMenue als Parameter übergeben Java Basics - Anfänger-Themen 20
K Dynamischen Supplier für Parameter Java Basics - Anfänger-Themen 12
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
W Methoden Methode ohne Parameter auf Instanz eines Objekts aufrufen? Java Basics - Anfänger-Themen 14
M Methode mit Parameter Java Basics - Anfänger-Themen 4
G Objektübergabe durch Parameter Java Basics - Anfänger-Themen 3
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
A Erste Schritte Methoden mit Parameter Java Basics - Anfänger-Themen 2
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
N Klassen Klassen zwingende Parameter mitteilen Java Basics - Anfänger-Themen 4
L Methoden Methode Parameter vertauschen? Java Basics - Anfänger-Themen 3
C Auswertung Ausdruck mit Punknotation + Objekt als Parameter Java Basics - Anfänger-Themen 3
A Methoden Parameter optionalisieren möglich? - Wie? Java Basics - Anfänger-Themen 19
N Beliebig viele parameter Java Basics - Anfänger-Themen 3
F Methoden: Referenzvariable als Parameter Java Basics - Anfänger-Themen 4
J HttpGet Parameter mitgeben Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
T Klasse von erfahren wenn Obertyp Parameter ist Java Basics - Anfänger-Themen 6
J Klassen Fehler mit Parameter des Konstruktors bei einer Objekterzeugung Java Basics - Anfänger-Themen 5
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2
M Klasse als Parameter übergeben Java Basics - Anfänger-Themen 7
S Methoden eine Instanz einer eigenen Klasse als parameter übergeben Java Basics - Anfänger-Themen 9
T unterschiedlich viele parameter übergeben Java Basics - Anfänger-Themen 5
V Methoden key value Parameter Java Basics - Anfänger-Themen 11
J Drucker parameter ändern Java Basics - Anfänger-Themen 9
F trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 0
O Basisklassen als Methoden-Parameter ähnlich, wie in C++ ? Java Basics - Anfänger-Themen 6
D GregorianCalendar als Parameter Java Basics - Anfänger-Themen 2
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben