Hallo Forum,
dann wollen wir mal, mein erster Post...
Google habe ich befragt, in der Insel habe ich auch schon rum gelesen, aber ich komme nicht weiter.
Folgendes:
Ich will als kleine Übung für mich eine art Tamagotchi programmieren. Das ganze allerdings nicht als "Vieh" sondern als Mensch.
Es ist das erste mal das ich mit Vererbung arbeite.
Ich habe eine Oberklasse Mensch, als Unterklassen Maennlich und Weiblich die je von Mensch erben. Dann natürlich noch ne Klasse mit "main".
In Mensch steht sowas wie Gewicht, Name etc.
In Maennlich bzw. Weiblich habe ich dann die Methoden "essen" und "trinken". Als Attribute zwei Werte die auf Gewicht addiert werden wenn getrunken oder gegessen wird.
Ich frage mit einem Textmenü ab was getan werden soll und werte das ganze über switch/case aus.
Jetzt mein Problem:
Ich erzeuge je nach Benutzereingabe (m oder w) ein Objekt was entweder Männlich oder Weiblich ist.
Wenn ich jetzt aber z.B. case 1 zum essen aufrufe habe ich zwei Möglichkeiten:
das müsste ich ja für alle Aktionen machen. Sehr unschön finde ich weil ja immer das selbe ist.
Jetzt zu meiner Frage:
Gibt es eine Möglichkeit anstatt m1.essen oder w1.essen aufzurufen einfach eine Variable zu nehmen z.B. x.essen und in x dann mein aktuelles Objekt einzufügen?
Ein Ansatz von mir war, einfach vor das Switch die if Abfrage zu bauen. Dann bekomme ich aber ein Problem mit der Sichtbarkeit und weiß auch nicht wie ich zwei Typen einer Variablen zuweisen soll...
Ich hoffe mein Problem ist einigermaßen klar und mir kann wer helfen.
In der Schule (Technikerschule) fangen wir gerade erst mit Objektorientierung an und Vererbung hatten wir noch gar nicht.
Vielen Dank schon mal für eure Hilfe!
Grüße
der Daniel
dann wollen wir mal, mein erster Post...
Google habe ich befragt, in der Insel habe ich auch schon rum gelesen, aber ich komme nicht weiter.
Folgendes:
Ich will als kleine Übung für mich eine art Tamagotchi programmieren. Das ganze allerdings nicht als "Vieh" sondern als Mensch.
Es ist das erste mal das ich mit Vererbung arbeite.
Ich habe eine Oberklasse Mensch, als Unterklassen Maennlich und Weiblich die je von Mensch erben. Dann natürlich noch ne Klasse mit "main".
In Mensch steht sowas wie Gewicht, Name etc.
In Maennlich bzw. Weiblich habe ich dann die Methoden "essen" und "trinken". Als Attribute zwei Werte die auf Gewicht addiert werden wenn getrunken oder gegessen wird.
Ich frage mit einem Textmenü ab was getan werden soll und werte das ganze über switch/case aus.
Jetzt mein Problem:
Ich erzeuge je nach Benutzereingabe (m oder w) ein Objekt was entweder Männlich oder Weiblich ist.
Code:
import java.util.Scanner;
public class Gotchi
{
static Maennlich m1;
static Weiblich w1;
public static void main( String[] args )
{
// Scanner Objekt erzeugen - Name "tastatur"
Scanner tastatur = new Scanner( System.in );
String geschlecht;
// Menu Objekt erzeugen
Menu men1 = new Menu();
System.out.print( "Soll die Person weiblich oder maennlich sein? m/w " );
geschlecht = tastatur.next();
if ( geschlecht.equalsIgnoreCase( "m" ) )
{
m1 = new maennlich();
}
else
{
w1 = new weiblich();
}
Wenn ich jetzt aber z.B. case 1 zum essen aufrufe habe ich zwei Möglichkeiten:
Code:
switch ( men1.getAuswahl() )
{
case 1:
if ( m1 == null )
{
// essen ist eine Methode von Maennlich oder Weiblich
w1.essen();
// getGewicht ist eine Methode von Mensch
System.out.println( w1.getGewicht() );
} else
{
m1.essen();
System.out.println( m1.getGewicht() );
}
break;
das müsste ich ja für alle Aktionen machen. Sehr unschön finde ich weil ja immer das selbe ist.
Jetzt zu meiner Frage:
Gibt es eine Möglichkeit anstatt m1.essen oder w1.essen aufzurufen einfach eine Variable zu nehmen z.B. x.essen und in x dann mein aktuelles Objekt einzufügen?
Ein Ansatz von mir war, einfach vor das Switch die if Abfrage zu bauen. Dann bekomme ich aber ein Problem mit der Sichtbarkeit und weiß auch nicht wie ich zwei Typen einer Variablen zuweisen soll...
Ich hoffe mein Problem ist einigermaßen klar und mir kann wer helfen.
In der Schule (Technikerschule) fangen wir gerade erst mit Objektorientierung an und Vererbung hatten wir noch gar nicht.
Vielen Dank schon mal für eure Hilfe!
Grüße
der Daniel