[Für Anfänger] Zusammenfassung des Java-Konstruktors

Was ist ein Konstruktor?

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

[Für Anfänger] Zusammenfassung des Java-Konstruktors
Zusammenfassung der Java-Unterstützung 2018
Zusammenfassung der einfachen Funktionen von Bootstrap für Anfänger
Zusammenfassung der Java-Umgebungseinstellungen für mich [mac]
Eine Sammlung einfacher Fragen für Java-Anfänger
[Einführung in Java] Grundlagen der Java-Arithmetik (für Anfänger)
[Java] Anfängerverständnis von Servlet-②
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Java-Debug-Ausführung [für Java-Anfänger]
[Java] Grundlegende Aussage für Anfänger
[Java] Anfängerverständnis von Servlet-①
[Java] Zusammenfassung der regulären Ausdrücke
[Java] Zusammenfassung der Operatoren (Operator)
Objektorientierte Zusammenfassung von Anfängern (Java)
Zusammenfassung der Grundlagen der Java-Sprache
Zusammenfassung der Java Math Klasse
Java für Anfänger, Daten verstecken
[Java] Zusammenfassung der Steuerungssyntax
Java-Anwendung für Anfänger: Stream
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Zusammenfassung der Entwurfsmuster
[Java] Zusammenfassung der mathematischen Operationen
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda
Einführung in Java für Anfänger Grundkenntnisse der Java-Sprache ①
Java Häufig verwendete Anweisungsliste (für Anfänger und Anfänger)
Zusammenfassung der Methoden zum Lesen von Dateien für jedes Java-Dateiformat
[Für Anfänger] Erläuterung von Klassen, Instanzen und Statik in Java
Java (Konstruktor)
Anfänger spielen Janken-Spiele in Java
Java für Anfänger, Ausdrücke und Operatoren 1
Zusammenfassung des Pakets [Java Silver Study]
[Für Anfänger] Führen Sie Selenium auf Java aus
Java für Anfänger, Ausdrücke und Operatoren 2
Java-Konstruktor
Kotlin-Generika für Java-Entwickler
Zusammenfassung der objektorientierten Programmierung mit Java
[Für Java-Anfänger] Informationen zur Ausnahmebehandlung
Klassen und Instanzen Java für Anfänger
Implementierung der Klonmethode für Java Record
[Java Silver] Zusammenfassung der Zugriffsmodifikatorpunkte
Zusammenfassung der internen Rookie-Lernsitzung [Java]
[java] Zusammenfassung des Umgangs mit char
Lernen Sie aus "Na und", den Grundlagen von Java [für Anfänger]
Zusammenfassung anderer Änderungen als JEP von Java10
Zusammenfassung des Docker-Verständnisses für Anfänger do ~ Docker-Compose ~
[Java] Persönliche Zusammenfassung der bedingten Anweisungen (grundlegend)
[Für Anfänger] Unterschied zwischen Java und Kotlin
Rails [Für Anfänger] Implementierung der Kommentarfunktion
Liste der Download-Ziele für Oracle Java
[Java] [Maven3] Zusammenfassung der Verwendung von Maven3
Funktionen des Spring Frameworks für Java-Entwickler
Erklärung von Ruby auf Schienen für Anfänger ①
Java Zusammenfassung der häufig gesuchten Typkonvertierungen
[Java] Instanzmethode, Instanzfeld, Klassenmethode, Klassenfeld, Konstruktorzusammenfassung
Zusammenfassung von Java Math.random und Import (Kalender)
Zusammenfassung des Java-Wissens
Für JAVA-Lernen (2018-03-16-01)
Java-bezogene Zusammenfassung