Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » this in Javaprogrammen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.02.2006, 12:32 Uhr
Meuterich



Hei,

irgendwie verstehe ich das mit dem this nicht wirklich. class Element ist ein Element fuer eine
Liste, NF = NachFolger


Code:
class Element
{ int Zahl;
    Element NF;
  
    Element(int Zahl, Element NF)
       { this.Zahl = Zahl;
          this.NF = NF;
        }

}// ende class Element



ist das nicht das gleiche wie:

Code:
class Element
{ int Zahl;
    Element NF;
  
    Element(int zahl, Element nf)
       { Zahl = zahl;
          NF = nf;
        }

}// ende class Element



Und warum dieses this dann?

Ich versteh den Nutzen nicht wirklich. Kann mir das jemand erklaeren wofuer ich
this nehmen soll?

Danke schonmal
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.02.2006, 12:59 Uhr
virtual
Sexiest Bit alive
(Operator)


Generell ist es so, daß der Name einer Parameters den namen eines Klassenattributes überdeckt:

Code:
class Test {

int a;

....

void setA(int a) {
    this.a = a; // "a" ist der Parameter, "this.a" die Instanzvariable
}


Von daher würde in deinem ersten Beispiel (wo Parameternamen so heißen wie die Instanzvariablen) einfach der Parameter sich selbst zugewiesen werden, wenn man das this fortlassen würde.

Andererseits ist es schlechter Stil
1. Variablen allein anhand von groß/Kleinschreibung zu unterscheiden (egal in welcher Programmiersprache)
2. Variablennamen mit Großbuchstaben beginnen zu lassen (speziell in Java, wegen der Codeconventions)

Daher hat sich diese this.* schreibweise weitgehend durchgesetzt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.02.2006, 14:12 Uhr
Meuterich



Hei,

gut, dann meine ich mal, ich habs verstanden.
Gibt es denn einen Fall bei dem es unabdingbar ist
ein 'this.vVariable' zu verwenden?

Dann ist es im zweiten Fall eher "kosmetisch" und schlechter Still,
doch ich unterscheide ja im zweiten Beispiel nur Parameter und Variable,
fand das immer so schoen uebersichtlich.

Aber waere das so nach der codecondings richtiger und guter Still ?

Code:
class Element
{ int iZahl;
    Element eNF;
  
    Element(int iZahl, Element eNF)
       { this.iZahl = iZahl;
          this.eNF = eNF;
        }

}// ende class Element



cheers und danke,

Meuterich
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.02.2006, 17:00 Uhr
KaraHead



Dein zweites Posting ist schon in Ordnung, vom Stil her.
Die Verwendung von this ist Geschmackssache, man kann auch einfach die Parameter anders bennenen und schon ist das this nicht mehr notwendig.
Wenn man jedoch Sun's Codeconventions folge leisten will, dann sollte man jedoch this bevorzugen.

Außerdem benutzt man this noch bei den Konstruktoren.

C++:
//Standardkonstruktor
String()
{
this(5); //ruft den alternativen Konstruktor auf
}

String(int size){
//erstellen einen String mit der länge size
}



Hoffe hab nix vergessen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.02.2006, 18:59 Uhr
Meuterich



aber koennte es nicht auch so gehen :

Code:
//Standardkonstruktor
String()
{
String(5); //ruft den alternativen Konstruktor auf
}

String(int size){
//erstellen einen String mit der länge size
}


--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.02.2006, 21:06 Uhr
KaraHead



Nein, da ein new fehlt, also

C++:
String()
{
new String(5); //und das ruft nicht den alternativen Konstruktor auf sondern erstellt ein
//neues String Objekt mit der size 5. Was bestimmt nicht gewollt ist.
}

String(int size){
//erstellen einen String mit der länge size
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: