Hi, ich bin blutiger Anfänger wenn es um das Programmieren geht und nun hab ich ein Problem mit einer Metode.
Ich bekomme ständig den Fehler, dass diese Methode einen Wert des Types Human zurückgeben muss.
Ich dachte eigentlich, dass sie das auch tut, aber anscheinend nicht.
Nur ich finde meinen Fehler nicht.
Könnt ihr mir vielleicht helfen.
Es liegt wohl an den Returnanweisungen: return girl/boy. Die werden anscheinend nicht anerkannt, aber warum?
Java:
publicHumangiveBirth(Male father,String nameGirl,String nameBoy){if(father ==null){returnnull;}else{booleanGeschlechtKind=randomBool();if(GeschlechtKind==false){this.father = father;Human girl =newFemale(nameGirl, age =0);return girl;}if(GeschlechtKind==true){this.father = father;Human boy =newMale(nameBoy, age =0);return boy;}}}
Wie kann ich mir den Jungen/das Mädchen zurückgeben lassen?
if(GeschlechtKind==false){this.father = father;Human girl =newFemale(nameGirl, age =0);return girl;}else{this.father = father;Human boy =newMale(nameBoy, age =0);return boy;}
publicHumangiveBirth(Male father,String nameGirl,String nameBoy){if(father ==null){returnnull;}this.father = father;
age =0;// welches age wird denn da auf 0 gesetzt?boolean weiblich =randomBool();if(weiblich){returnnewFemale(nameGirl, age);}returnnewMale(nameBoy, age);}
zumindest
> boolean weiblich
solltest du übernehmen, und dann ein if + vielleicht ein else,
if (true) {
}
if (false) {
} else {
}
ist ganz schlimm bei einem boolean der nur true oder false sein kann
Einerseits widerspricht es de Java CodeKonventionen (if (geschlechtKind == true) wäre besser), andererseits macht es doch gar keinen ersichtlichen Sinn eine boolean Variable Geschlecht zu nennen, woher sollte der Leser wissen das der Wert true für weiblich steht???
Da ist SlaterBs Vorschlag schon um längen besser
Ah ok, jetzt verstehe ich.
Man soll so schreiben, dass es auch andere leicht nachvollziehen können und da ist es dann z.b. leichter nachzuvollziehen, wenn boolean weiblich ist, weil das kann ja nur richtig sein oder falsch und meine Variable könnte ja auch einen String enthalten.
Aber auf sowas achte ich zur Zeit einfach noch nicht. Ich bin froh, wenn das Programm tut was es soll ^^
das Baby bekommt sicherlich 0 als Parameter und speichert das dann vielleicht in seinen Variablen (wie im echten Leben )
aber wo steht die Methode, in der Klasse Human? ist das aktuelle Objekt die Mutter?
dann wird deren Age auch auf 0 gesetzt und der Vater der Mutter geändert,
das Baby erhält keine Information, wer sein/ ihr Vater oder Mutter ist
Momentan hab ich noch genug Probleme einen Code zu schreiben, der das tut was er soll...
Besonders jetzt wo wir Klassen haben und nicht mehr alles in main ist. Da blick ich noch nicht so durch, wie ich dann auf die manche Attribute der verschiedenen Variablen zugreifen kann....
das Baby bekommt sicherlich 0 als Parameter und speichert das dann vielleicht in seinen Variablen (wie im echten Leben )
aber wo steht die Methode, in der Klasse Human? ist das aktuelle Objekt die Mutter?
dann wird deren Age auch auf 0 gesetzt und der Vater der Mutter geändert,
das Baby erhält keine Information, wer sein/ ihr Vater oder Mutter ist
Die Methode steht in der Klasse Female, neben der es noch Male und Human gibt.
Sowohl Male als auch Female sind Unterklassen von Human.
Edit:
Jetzt weis ich auch was du mit dem age meintest. Ich hab das Alter der Mutter auch wunderschön auf 0 gesetzt.
Habs aber jetzt ausgebessert.
Danke für den Tipp SlaterB!!