2017-12-13 2 views
-1

Ich lerne Java von mir selbst. Ich lese diesen Code und brauche eine Erklärung.Java Grundlagen, mit diesem für Konstruktor

Warum wurde in diesem Codeabschnitt (kopiert von https://www.javatpoint.com/aggregation-in-java) this verwendet?

Ist es bei dem Verfahren verschiedene lokale Variablennamen, die wie nicht gleich:

public Address(String i, String j, String k) und city=i nur stattdessen verwenden?

Gibt es einen Grund für die Verwendung this.city=city hier? Danke.

public class Address 
{ 
    String city,state,country; 

    public Address(String tempCity, String tempState, String tempCountry) { 
     mycity = tempCity; 
     state = tempState; 
     country = tempCountry; 
    } 
} 

Was Vor- und Nachteile der zweiten Version im Vergleich zum ersten sind:

public class Address { 
    String city,state,country; 

    public Address(String city, String state, String country) { 
     this.city = city; 
     this.state = state; 
     this.country = country; 
    } 
} 

In der Tat würde ich den Code so schreiben?

+2

Es geht nicht um die Verwendung von "das" also nicht ein Duplikat, sondern mehr von den Best Practices, wenn Sie eine Alternative haben. Ich persönlich denke, dass es keinen Grund gibt, "dieses" hier und doppelte Variablennamen zu verwenden. – Artemis

+2

Ich würde sagen, etwa die Hälfte oder ein Drittel dieser Frage überschneidet sich mit einem kleinen Teil einer dieser Antworten. Es ist keine klare 1 zu 1 Duplikat – phflack

+1

Es bleibt immer noch zu den nahen Wähler, wenn eine Frage in der Tat ein Duplikat oder Off-Thema ist. Solange die Frage offen ist und Sie persönlich nicht glauben, dass es sich um ein Duplikat oder ein anderes Thema handelt, sollten Sie die Frage beantworten. Es gibt viele Fälle, in denen nur einige meinen, es sei ein Duplikat/OT (nicht genug zum Schließen) und in diesem Fall sind die Antworten willkommen. Und während ich kein Fan von ** down-voting ** guten Antworten auf * schlechte Fragen * bin, sollte man sicherlich bis zum Schluss warten. – Zabuza

Antwort

-1

Ist es nicht zu, die verschiedene lokale Variablennamen in der Methode wie gleich verwendet: public Adresse (String i, j String, String k) und benutze einfach city = i stattdessen?

Es ist.
Es kann jedoch einfacher sein, denselben Namen in Parametern zu verwenden wie in Feldern, wenn Sie Feldern Parameter zuweisen.

Ein city Feld repräsentiert eine city.
Warum einen anderen Namen im Parameter verwenden?
Persönlich, es durch i oder cityP im Parameternamen darstellt, macht es weniger klar. Danach ist es Geschmackssache.

1

Gibt es einen Grund für die Verwendung von this.city = city hier?

In diesem Fall this.city = city; Verwendung ist Mehrdeutigkeit für die Leser zu verhindern (und Compiler)

Die Alternative ist city = city;, aber es ist nicht klar, wie auf die city

gesetzt wird (und in diesem Fall verändert nicht die Klassenvariable)

Verwandte: Answer to When should I use “this” in a class?, case 1

Ist es nicht gleich unterschiedliche lokale Variablennamen in dem Verfahren mit

Ja, mit verschiedenen Variablennamen sein kann saubere

(einige Leute bevorzugen die gleichen Namen, und nur passende, ich ziehe erste Buchstaben: city = c)

Was Vor- und Nachteile der zweiten Version im Vergleich zum ersten sind?

Es ist eine Art, wenn Sie mit anderen Programmierung sind es am besten, den gleichen Stil

haben, wenn das Unternehmen sie arbeiten sind tut es einen Weg, und Sie anfangen, es eine andere Art und Weise zu tun, es wird viel schwieriger sein, die Code-Basis

Verwandte zu halten: Is Programming Style important? How Important?

+0

Eigentlich ist 'i' für' city' nicht * cleaner *, aber 'city = cityName' ist – Andrew

+0

Ich vermute,' i', 'j' und' k' waren nur Beispiele dafür, dass es alles sein könnte, wenn sie es wären tatsächlich verwendet dann wäre es viel schwieriger zu folgen (als 'c' oder' cityName') – phflack

+0

* "Die Alternative ist' city = city; ', aber es ist nicht offensichtlich, welche Stadt gerade gesetzt wird" * - Das ist keine Alternative, das ist völlig falsch. – Tom

0

Beachten Sie, dass city in der Klasse als ein Feld haben, und es ist auch ein Parameter, der durch die Funktion übergeben werden. Um den übergebenen Parameter in die Stadt Feld zuweisen, wird this.city

0

Der Grund, warum sie this.city hier verwenden, ist, weil, wie Sie sagten, der lokale Parametername city mehrdeutig zu der Klassenvariablen ist.

Ein weiterer Punkt der Verwendung this Zugriff auf Klassenvariablen ist, dass es den Code lesbarer machen kann, weil Sie sofort eine a-Klasse-Variable kennen, auch wenn Sie die Deklaration nicht sehen.

1

Warum das eigentlich ziemlich häufig ist: IDEs bieten automatische Zuordnungen. Also, was Sie in Eclipse zu tun ist zum Beispiel Typ

class Address { 
    public Address(String city, String state, String country) {} 
} 

und Eclipse wird Sie warnen, dass die Parameter city, state und country nicht in dem Verfahren verwendet werden. Also was Sie tun können, ist eine automatische Korrektur auszulösen, von denen "neue Felder zuweisen" ist, die die Felder in der Klasse erstellen und sie im Konstruktor zuweisen. Die Feldnamen stimmen dann mit den Parametern überein und müssen daher this. haben, damit sie auf die Felder verweisen, nicht auf die Parameter.