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