tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
775
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von SunnnnY
    SunnnnY SunnnnY ist offline Rookie
    Registriert seit
    Nov 2002
    Ort
    Aus meiner Mutter
    Beiträge
    6
    Moin!
    Was bewirkt der im Titel angegebene Befehl und wann und warum benutzt man ihn?


    <- java

    MfG
    Sny
     

  2. #2
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Lokale Variablen überschreiben Membervariablen

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
     
    Variante A (falsch);
    class User {
       private String name;
       
       public User(String name) {
          name = name;
       }
    }
     
     
    Variante B (richtig);
    class User {
       private String name;
       
       public User(String name) {
          this.name = name;
       }
    }

    Da lokale Variablen primär behandelt werden ist in der Variante A das Problem
    das die Membervariable name der Klasse User nie gesetzt wird.
    Das einzige was passiert ist die lokale Variable name bekommt den Wert von sich
    selber zugewiesen. Was natürlich unsinn ist.

    Variante B macht demnach klar das die Variable name des aktuellen Objectes (this)
    den Wert der lokalen Variable name zugewiesen bekommt, was im Sinne des erfinders ist.

    this zeigt immer auf das aktuelle Object:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    class User {
       private String name;
       
       public User(String name) {
          this.name = name;
       }
       
       public String getName() { 
          return name;
        }
    }
     
     
    User userA = new User("Heinrich"); 
    User userB = new User("Detlef);

    In der Methode getName() gibt es keine lokale variable name, weshalb hier das this nicht benötigt wird. Sprich getName() gibt tatsächlich den Wert der Membervariable name zurück.
    Sprich im Constructor steht this.name hier erstmal für userA.name und später für userB.name
    Weshalb userA.getName().equals("Heinrich")==true und userB.getName().equals("Detlef");
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 25.08.10, 19:13
  2. Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
    Von MTMonline im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 25.04.08, 09:49
  3. Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
    Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 6
    Letzter Beitrag: 27.05.05, 15:29
  4. Antworten: 2
    Letzter Beitrag: 19.05.05, 19:51
  5. position:relative bewirkt ein "Loch"
    Von Pflaumi im Forum CSS
    Antworten: 3
    Letzter Beitrag: 05.11.03, 14:00