[Pour les débutants] Résumé du constructeur java

Qu'est-ce qu'un constructeur

Le constructeur transmet automatiquement des informations (champs) à l'instance créée par new.


public class Hero {
	String name;
	int hp;
}

Si vous instanciez cette classe de héros, un héros sans valeur (le nom est nul et hp est égal à 0) sera généré.

public class Hero {
	String name;
	int hp;

	//constructeur
	Hero(){
		this.name = "Nom";
		this.hp = 100;
	}
}

Cela vous permet d'attribuer des valeurs aux champs. Mais avec cela, vous ne pouvez faire que Hero avec le même nom et le même HP. Je ne peux pas fabriquer une sorcière HP50 ou une fée HP70. Je vais donc le faire pour que je puisse créer des personnages librement.

public class Hero {
		String name;
		int hp;

		//constructeur
		Hero(String name , int hp){
			this.name = name;
			this.hp = hp;
		}
}

Ce que cela fait, c'est que Hero (String name, int hp) prend name et hp et les affecte au champ. Où est-il reçu de la méthode principale?

public static void main(String[] args) {
		Hero h = new Hero("Courageux" , 100);
	}

Depuis que j'ai défini un constructeur qui reçoit deux arguments dans la classe Hero, j'ai également défini deux arguments lors de l'appel. S'il s'agit d'un argument, une erreur se produira.

Le résultat est comme ça. Assurez-vous que les valeurs sont correctement transmises.

public static void main(String[] args) {
		Hero h = new Hero("Courageux" , 100);
		System.out.println("Nom est" + h.name + "est.");
		System.out.println("HP est" + h.hp + "est.");
	}

Le résultat est

Le nom est courageux.
HP est de 100.

J'ai pu le passer correctement.

Mais avec cela, si vous ne voulez passer que le nom, vous obtiendrez une erreur.


public class Main {

	public static void main(String[] args) {
		Hero h = new Hero("Courageux");//Obtenez une erreur
	}
}

Dans ce cas, ajoutez un constructeur à la méthode Hero.

public class Hero {
		String name;
		int hp;

		//constructeur
		Hero(String name , int hp){   //Premier constructeur
			this.name = name;
			this.hp = hp;
		}
		Hero(String name){   //Deuxième constructeur
			this.name = name;   
			this.hp = 50;
		}
}

Vous pouvez définir plusieurs constructeurs avec le même nom mais avec des nombres d'arguments différents. C'est ce qu'on appelle la surcharge. Si new est appelé dans la méthode main et que les arguments sont name et hp, le premier constructeur sera appelé. S'il n'y a qu'un nom dans l'argument, le deuxième constructeur sera appelé. Cela ne causera pas d'erreur, mais si plus de champs sont passés, ils seront moins corrigibles et moins lisibles. Alors


this()

Est utilisé. Vous pouvez l'utiliser pour appeler un constructeur dans la même méthode.


public class Hero {
		String name;
		int hp;

		//constructeur
		Hero(String name , int hp){   //Premier constructeur
			this.name = name;
			this.hp = hp;
		}
		Hero(String name){   //Deuxième constructeur
			this(name , 50);
		}
}

Ce sera comme ça. Nous appelons le premier constructeur dans le second constructeur. Le premier constructeur a deux arguments, donc this () a deux arguments dans (). Le nom sera celui transmis par la méthode principale et le hp ne sera pas transmis, alors entrez tout hp. Ici, il est fixé à 50. Quand vous l'exécutez avec ça

public class Main {

	public static void main(String[] args) {
		Hero h = new Hero("Courageux");
		System.out.println("Nom est" + h.name + "est.");
		System.out.println("HP est" + h.hp + "est.");
	}
}

résultat


Le nom est courageux.
HP est de 50.

Vous avez reçu 50 correctement. Ceci () est assez déroutant. C'est plus facile à comprendre si vous les écrivez un par un! Vous pourriez penser cela, mais alors ce sera difficile lorsque vous devrez changer de champ plus tard.

public class Hero {
		String name;
		int hp;

		//constructeur
		Hero(String name , int hp){   //Premier constructeur
			this.name = name;
			this.hp = hp;
		}
		Hero(String name){   //Deuxième constructeur
			this.name = name;   
			this.hp = 50;
		}
}

Si vous écrivez comme ça et que vous devez changer le champ plus tard


public class Hero {
		String name1;  //Vous devez changer cela pour name1.
		int hp;

		//constructeur
		Hero(String name , int hp){   //Premier constructeur
			this.name = name;  //Une erreur se produira.
			this.hp = hp;
		}
		Hero(String name){   //Deuxième constructeur
			this.name = name;  //Une erreur se produira.
			this.hp = 50;
		}
}

Dans ce cas, vous devrez réparer deux endroits. C'est toujours bien s'il y a deux constructeurs, mais à mesure que le nombre augmente, le travail devient difficile. Si vous avez fixé des dizaines d'endroits, il est prudent de faire une erreur au même endroit.

C'est la partie sur laquelle je suis tombé par hasard, alors je l'ai résumé. Si vous faites une erreur, veuillez la signaler.

nkojima Merci d'avoir souligné. J'ai supprimé une partie de l'article. Certes, quand je l'ai relu, c'était différent de la lisibilité. Nous ferons également référence à l'article que vous avez envoyé.

Recommended Posts

[Pour les débutants] Résumé du constructeur java
Résumé du support Java 2018
Résumé des fonctionnalités simples de Bootstrap pour les débutants
Récapitulatif des paramètres de l'environnement Java pour moi-même [mac]
Une collection de questions simples pour les débutants Java
[Introduction à Java] Bases de l'arithmétique Java (pour les débutants)
[Java] Compréhension débutante de Servlet-②
[Java11] Résumé du flux -Avantages du flux-
Exécution de débogage Java [pour les débutants Java]
[Java] Instruction de base pour les débutants
[Java] Compréhension débutante de Servlet-①
[Java] Résumé des expressions régulières
[Java] Résumé des opérateurs (opérateur)
Résumé orienté objet par les débutants (Java)
Résumé des bases du langage Java
Résumé de la classe Java Math
Java pour les débutants, masquage des données
[Java] Résumé de la syntaxe de contrôle
Application Java pour les débutants: stream
Résumé du traitement des erreurs Java
[Java] Résumé des modèles de conception
[Java] Résumé des opérations mathématiques
[Pour les débutants] Comprendre rapidement les bases de Java 8 lambda
Introduction à Java pour les débutants Connaissance de base du langage Java ①
Liste des instructions Java fréquemment utilisées (pour les débutants et les débutants)
Résumé des méthodes de lecture de fichiers pour chaque format de fichier Java
[Pour les débutants] Explication des classes, des instances et des statiques en Java
java (constructeur)
Les débutants jouent à des jeux Janken en Java
Java pour les débutants, les expressions et les opérateurs 1
Résumé du package [Java Silver Study]
[Pour les débutants] Exécutez Selenium sur Java
Java pour les débutants, les expressions et les opérateurs 2
Constructeur Java
Génériques Kotlin pour les développeurs Java
Résumé de la programmation orientée objet utilisant Java
[Pour les débutants en Java] À propos de la gestion des exceptions
Classes et instances Java pour les débutants
Implémentation de la méthode de clonage pour Java Record
[Java Silver] Résumé des points de modification d'accès
Résumé de la session d’étude interne des recrues [Java]
[java] Résumé de la gestion des caractères
Apprenez de «Et alors», les bases de Java [pour les débutants]
Récapitulatif des modifications autres que JEP de Java10
Résumé de la compréhension de Docker par les débutants ② ~ docker-compose ~
[Java] Résumé personnel des instructions conditionnelles (basique)
[Pour les débutants] Différence entre Java et Kotlin
Rails [Pour les débutants] Implémentation de la fonction de commentaire
Liste des destinations de téléchargement pour Oracle Java
[Java] [Maven3] Résumé de l'utilisation de Maven3
Fonctionnalités du framework Spring pour les développeurs Java
Explication de Ruby sur rails pour les débutants ①
Résumé Java des conversions de types fréquemment recherchées
[Java] Méthode d'instance, champ d'instance, méthode de classe, champ de classe, résumé du constructeur
Résumé de Java Math.random et import (calendrier)
Résumé des connaissances Java
Pour l'apprentissage JAVA (2018-03-16-01)
Résumé relatif à Java