Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich verstehe die folgende Methode nicht ganz:
Java:
public String ausgabe() {
// Methode zur Erzeugung
String desc = idNum + ” ( ”+ name + ” ) ” ;
// eines Strings zur
if ( orbit != null ) // Beschreibung eines
desc += ” orbit ” + orbit .ausgabe (); // Body−Objekts
return 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]
public class Body5{
public int idNum;
public String name=”<unbenannt>”;
public Body5 orbit=null;
public static intnextID=0;
publicBody5(){
idNum=nextID++;
}
public Body (StringbodyName){
this();
name=bodyName;
}
public Body5 (StringbodyName,Body5orbitAround){
this();
name=body Name;
orbit=orbitAround;
}
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();
class Foo
{
Foo foo; // foo ist eine Variable vom Typ Foo
name = "Bar";
String getName()
{
return name;
}
void setFoo(Foo aFoo)
{
foo = aFoo;
}
String ausgabe()
{
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
Java:
Foo foo1 = new Foo();
Foo foo2 = new Foo();
foo1.setFoo(foo2);
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
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:
class Punkt{
int x;
void setX ( int u){
x=u;
}
\\Dann weiter in der main
public static void main( String [] args{
Punkt p1= new Punkt(),
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 = new Mensch("Peter");
Mensch paula = new Mensch("Paula");
Mensch hans = new Mensch("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 = new Person("Peter");
Person anna = new Person("Anna");
Person linda = new Person("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 */
Fall A: Name: Peter, Ehepartner: Anna
Fall B: Name: Peter kein Ehepartner
Fall C: Name: Peter, Ehepartner: Linda
Fall C: Name: Linda, Ehepartner: Peter
Fall D: Name: Peter kein Ehepartner
Fall D: Name: Linda kein Ehepartner
Person peter = new Person("Peter");
Person anna = new Person("Anna");
peter.heirat(anna);
anna.heirat(peter);
System.out.println("Fall A: " + peter);
peter.scheidung();
peter.heirat(peter);
System.out.println("Fall B: " + peter);