2016-09-26 4 views
-4

Ich nehme derzeit Java-Klasse, und heute mein Lehrer sagte etwas, dass mein Verstand nicht akzeptiert, ich könnte falsch liegen. folgenden Code,java dieses Schlüsselwort in Konstruktor

 class Ab{ 
     int x; 
     int b; 

      public Ab(int x, int b){ 
       this.x = x; 
       this.b = b; 
      } 


      public static void main(String[] args){ 
       Ab x = new Ab(4,5); // this is where my teacher confused me 

      } 
} 

mein Lehrer sagte x Ab = new AB(4,5); x Objekt erhalten Konstruktor in Konstruktor übergeben Aufruf darauf verweisen mit this keyword, was über anonyme Klassen wie new Ab(2,4); jetzt, was wird this keyword bezieht sich auf? Aus meiner Sicht this innerhalb Konstruktor hat keine Verbindung mit Referenzvariable bis Konstruktor das Objekt erstellen und den Verweis auf Variable zurückgeben.

+0

'this' bezieht sich auf das aktuelle Objekt. – Li357

+0

Ihre Klasse definiert das Feld 'int x', aber im Konstruktor verwenden Sie' this.a'. Entweder du meintest "int a" und "this.a" oder "int x" und "this.x". Welcher ist richtig? – walen

+0

Warum ist Ihr Code so formatiert? – markspace

Antwort

1

was ist mit anonymen Klassen wie new Ab(2,4);

Dies ist keine anonyme Klasse. Es ist ein Ausdruck, der ein neues Objekt vom Typ AB erzeugt. Der Wert dieses Ausdrucks ist eine Referenz auf das Objekt. Der Wert this innerhalb des AB-Konstruktors ist eine Referenz auf das Objekt. Und der Wert von x unten ist eine Referenz auf das Objekt. Sie sind alle Referenzen auf das gleiche Objekt.

Ab x = new Ab(4,5); // this is where my teacher confused me 

in meiner Sicht dieses innerhalb Konstruktor hat keine Verbindung mit Referenzgröße bis Konstruktor das Objekt und gibt den Verweis auf Variablen.

Der this innerhalb des Konstruktors muss nicht auf eine andere Referenzvariable verweisen. Es zeigt auf das gleiche Objekt wie x wird, wenn der Konstruktor zurückgibt.

Eine Referenz ist nicht das Objekt selbst. Sie können es von einem von möglicherweise mehreren Zeigern zu einem Objekt denken.

+0

jetzt, dass es für mich klar, vielen Dank –

0

Sie haben this zu geben, weil in ihrem Umfang Namen Konstruktor unsere Variablen a und b hinter den Namen von Parametern versteckt a und b. this bedeutet nur das aktuelle Objekt der Klasse.

BEARBEITEN: Objekt wird mit Schlüsselwort new erstellt. Die x Variable ist nur eine Referenz auf das Objekt. In den Klassenmethoden können wir uns auf das aktuelle Objekt mit this beziehen und woanders müssen wir einen Verweis machen. Also, wenn Ihr Lehrer über this Bezug auf x erzählt hat, meinte er Bezug auf das Objekt, das mit x zugänglich ist.

+0

Wenn du den letzten Absatz lesen kannst, habe ich alles erklärt. –

+0

Hat 'dieses Schlüsselwort' innerhalb des Konstruktors eine Beziehung zur Referenzvariablen x, bevor das Konstruktorobjekt fertig ist und den Verweis auf die x-Variable zurückgibt? –

+0

@RidaBatool Ich habe meine Antwort bearbeitet, um Ihnen alles zu erklären, akzeptieren Sie sie als die richtige Antwort, wenn es geholfen hat! –

Verwandte Themen