Hallo, ich verstehe die folgende Methode nicht ganz:
Java:
publicStringausgabe(){// Methode zur ErzeugungString desc = idNum + ” ( ”+ name + ” ) ” ;// eines Strings zurif( orbit !=null)// Beschreibung eines
desc += ” orbit ” + orbit .ausgabe ();// Body−Objektsreturn desc;}
Ich verstehe folgendes nicht:
desc += ” orbit ” + orbit .ausgabe ();
Warum kann man in der Methode ausgabe() die Methode ausgabe() aufrufen. Ich hätte gedacht,
dasss die Methode erst mal "definiert" wird, bevor man sie dann verwendet?
Woher kommst du drauf, dass es eine Rekursion ist? Beide Methoden können einfach ausgabe() heißen. https://www.java-forum.org/mitglied/informatikanfaenger12.56703/ @Informatikanfänger12 Ist orbit von der selben Klasse wie die umliegende Klasse von der gezeigten Methode ausgabe()? Poste doch mal den ganzen Code.
Code-Tags nicht vergessen: [code=java]//JAVA CODE HERE[/code]
Und würde das Body5-Objekt in der Variablen 'orbit' wieder ein Objekt in 'seiner' Variablen 'orbit' enthalten, dann würde auch dieses noch hinzugefügt. Das geht solange, bis die die Variable 'null' ist.
Die Referenzvariable orbit weist am bei der Initialsierung auf kein Objekt.
Solange dann orbit auf ein Objekt weist, soll
desc = desc + "orbit" + orbit.ausgabe() ausgeführt werden.
Warum ist den dass orbit in "". Was bedeutet das?
Stimmt ja auch, die Variable desc wird zurück gegeben und nichts anderes.
Dir ist schon klar, dass desc += ” irgend ein Text ” + orbit.ausgabe();
dasselbe ist wie desc = desc + ” irgend ein Text ” + orbit.ausgabe();
classFoo{Foo foo;// foo ist eine Variable vom Typ Foo
name ="Bar";StringgetName(){return name;}voidsetFoo(Foo aFoo){
foo = aFoo;}Stringausgabe(){String neu ="Der Name lautet: "+getName();if(foo !=null)// prüft, ob "foo" nicht null ist{
neu = neu +" und der Name von foo ist: "+ foo.ausgabe();}return neu;}}
Vorausgesetzt irgendwo im Programm steht sowas wie
Sorry für die späte Antwort:
Also es werden zwei Objekte vom Typ foo erzeugt. Dann wird foo1=foo2 gesetzt. Oder eher die beiden Referenzvariablen foo1 und foo2 zeigen auf dasselbe Objekt
Sorry für die späte Antwort:
Also es werden zwei Objekte vom Typ foo erzeugt. Dann wird foo1=foo2 gesetzt. Oder eher die beiden Referenzvariablen foo1 und foo2 zeigen auf dasselbe Objekt
Nö, vielleicht hilft es dir wenn das Beispiel weniger abstrakt ist:
Java:
classMensch{Mensch ehepartner;
name ="";publicMensch(String name){this.name = name;}StringgetName(){return name;}voidsetEhepartner(Mensch aPartner){
ehepartner = aPartner;}Stringausgabe(){String neu ="Der Name lautet: "+getName();if(ehepartner !=null){
neu = neu +" und der Name des Ehepartners ist: "+ ehepartner.ausgabe();}return neu;}}
Java:
Mensch peter =newMensch("Peter");Mensch paula =newMensch("Paula");
peter.setEhepartner(paula);
Also: Nur zum Verständnis. Ganz oben bei name muss doch noch String davor stehen oder?
Mensch peter = new Mensch("Peter");
Mensch paula = new Mensch("Paula");
Es werden 2 Objekte erstellt, deren Referenz in den Variablen peter und paula gespeichert werden.
peter.setEhepartner(paula); Ich verstehe nicht genau was gemacht wird.
Wenn ich zb. sowas habe:
PHP:
classPunkt{
int x;
void setX ( int u){
x=u;}
\\Dann weiter in der main
publicstatic void main( String [] args{
Punkt p1=newPunkt(),
p1.setX(1);
\\ Dann hat das Objekt den Wert x=1}
Dasselbe wie bei setFoo(). Der übergebene Parameter wird dem Feld ehepartner zugewiesen. Die beiden Variablen paula und peter.ehepartner referenzieren dasselbe Objekt.
Dasselbe wie bei setFoo(). Der übergebene Parameter wird dem Feld ehepartner zugewiesen. Die beiden Variablen paula und peter.ehepartner referenzieren dasselbe Objekt.[/QUOTE]
Was ist dann mit peter?
Ich hätte gedacht peter referenziert dann auf ehepartner?
Wenn du es jetzt verstanden hast, dann nur noch der Hinweis, dass sich dieses Spiel noch weiter treiben ließe, wenn auch die Variable 'ehepartner' von paula noch auf ein Objekt verweist:
Java:
Mensch peter =newMensch("Peter");Mensch paula =newMensch("Paula");Mensch hans =newMensch("Hans");
paula.setEhepartner(hans);
peter.setEhepartner(paula);
Bigamie? Das lässt sich unterbinden @Informatikanfänger12
Nächste Stufe:
- Die Person darf nur ein Ehepartner haben
- Jeder der Ehepartner darf die Scheidung einreichen
Java:
Person peter =newPerson("Peter");Person anna =newPerson("Anna");Person linda =newPerson("Linda");
peter.heirat(anna);
peter.heirat(linda);System.out.println("Fall A: "+ peter);
peter.scheidung();System.out.println("Fall B: "+ peter);
peter.heirat(linda);System.out.println("Fall C: "+ peter);System.out.println("Fall C: "+ linda);
linda.scheidung();System.out.println("Fall D: "+ peter);System.out.println("Fall D: "+ linda);/** Konsolenausgabe */FallA:Name:Peter,Ehepartner:AnnaFallB:Name:Peter kein EhepartnerFallC:Name:Peter,Ehepartner:LindaFallC:Name:Linda,Ehepartner:PeterFallD:Name:Peter kein EhepartnerFallD:Name:Linda kein Ehepartner
Person peter =newPerson("Peter");Person anna =newPerson("Anna");
peter.heirat(anna);
anna.heirat(peter);System.out.println("Fall A: "+ peter);
peter.scheidung();
peter.heirat(peter);System.out.println("Fall B: "+ peter);