Der Konstruktor übergibt automatisch Informationen (Felder) an die von new erstellte Instanz.
public class Hero {
String name;
int hp;
}
Wenn Sie diese Heldenklasse instanziieren, wird ein Held ohne Wert (Name ist null und HP ist 0) generiert.
public class Hero {
String name;
int hp;
//Konstrukteur
Hero(){
this.name = "Name";
this.hp = 100;
}
}
Auf diese Weise können Sie Feldern Werte zuweisen. Aber damit können Sie Hero nur mit demselben Namen und derselben HP erstellen. Ich kann keine Hexe HP50 oder Fee HP70 machen. Also mache ich das, damit ich Charaktere frei erstellen kann.
public class Hero {
String name;
int hp;
//Konstrukteur
Hero(String name , int hp){
this.name = name;
this.hp = hp;
}
}
Dies bedeutet, Name und HP mit Hero (String name, int hp) zu nehmen und sie dem Feld zuzuweisen. Wo wird es von der Hauptmethode empfangen?
public static void main(String[] args) {
Hero h = new Hero("Mutig" , 100);
}
Da ich einen Konstruktor festgelegt habe, der zwei Argumente in der Hero-Klasse empfängt, habe ich beim Aufruf auch zwei Argumente festgelegt. Wenn dies ein Argument ist, tritt ein Fehler auf.
Das Ergebnis ist dies. Stellen Sie sicher, dass die Werte ordnungsgemäß übergeben werden.
public static void main(String[] args) {
Hero h = new Hero("Mutig" , 100);
System.out.println("Name ist" + h.name + "ist.");
System.out.println("HP ist" + h.hp + "ist.");
}
Ergebnis ist
Der Name ist mutig.
HP ist 100.
Ich konnte es richtig bestehen.
Wenn Sie jedoch nur den Namen übergeben möchten, wird eine Fehlermeldung angezeigt.
public class Main {
public static void main(String[] args) {
Hero h = new Hero("Mutig");//Erhalten Sie einen Fehler
}
}
Fügen Sie in diesem Fall der Hero-Methode einen Konstruktor hinzu.
public class Hero {
String name;
int hp;
//Konstrukteur
Hero(String name , int hp){ //Erster Konstruktor
this.name = name;
this.hp = hp;
}
Hero(String name){ //Zweiter Konstruktor
this.name = name;
this.hp = 50;
}
}
Sie können mehrere Konstruktoren mit demselben Namen, aber unterschiedlicher Anzahl von Argumenten festlegen. Dies nennt man Überlastung. Wenn in der Hauptmethode new aufgerufen wird und die Argumente name und hp sind, wird der erste Konstruktor aufgerufen. Wenn das Argument nur einen Namen enthält, wird der zweite Konstruktor aufgerufen. Dies verursacht keinen Fehler, aber wenn mehr Felder übergeben werden, ist dies weniger korrigierbar und weniger lesbar. Damit
this()
Wird genutzt. Sie können es verwenden, um einen Konstruktor in derselben Methode aufzurufen.
public class Hero {
String name;
int hp;
//Konstrukteur
Hero(String name , int hp){ //Erster Konstruktor
this.name = name;
this.hp = hp;
}
Hero(String name){ //Zweiter Konstruktor
this(name , 50);
}
}
Es wird so sein. Wir rufen den ersten Konstruktor im zweiten Konstruktor auf. Der erste Konstruktor hat zwei Argumente, daher hat this () zwei Argumente in (). Der Name wird von der Hauptmethode übergeben, und die HP wird nicht übergeben. Geben Sie also eine beliebige HP ein. Hier ist es auf 50 eingestellt. Wenn Sie es damit ausführen
public class Main {
public static void main(String[] args) {
Hero h = new Hero("Mutig");
System.out.println("Name ist" + h.name + "ist.");
System.out.println("HP ist" + h.hp + "ist.");
}
}
Ergebnis
Der Name ist mutig.
HP ist 50.
Sie haben 50 richtig gegeben. Dies () ist ziemlich verwirrend. Es ist einfacher zu verstehen, wenn Sie sie einzeln schreiben! Sie mögen das denken, aber dann wird es schwierig, wenn Sie das Feld später ändern müssen.
public class Hero {
String name;
int hp;
//Konstrukteur
Hero(String name , int hp){ //Erster Konstruktor
this.name = name;
this.hp = hp;
}
Hero(String name){ //Zweiter Konstruktor
this.name = name;
this.hp = 50;
}
}
Wenn Sie so schreiben und das Feld später ändern müssen
public class Hero {
String name1; //Sie müssen dies in name1 ändern.
int hp;
//Konstrukteur
Hero(String name , int hp){ //Erster Konstruktor
this.name = name; //Ein Fehler wird auftreten.
this.hp = hp;
}
Hero(String name){ //Zweiter Konstruktor
this.name = name; //Ein Fehler wird auftreten.
this.hp = 50;
}
}
In diesem Fall müssen Sie zwei Stellen reparieren. Es ist immer noch gut, wenn es zwei Konstruktoren gibt, aber mit zunehmender Anzahl wird die Arbeit schwierig. Wenn Sie Dutzende von Stellen repariert haben, ist es sicher, an einer Stelle einen Fehler zu machen.
Es war der Teil, über den ich gestolpert bin, also habe ich ihn zusammengefasst. Wenn Sie einen Fehler machen, weisen Sie bitte darauf hin.
nkojima Vielen Dank für den Hinweis. Ich habe einen Teil des Artikels gelöscht. Als ich es zurücklas, war es sicherlich anders als die Lesbarkeit. Wir verweisen auch auf den Artikel, den Sie gesendet haben.
Recommended Posts