(code)
//Générer une douzaine de vaders d'instance
StChara dath = new StChara();//① ・ ②
//Valeur de champ de substitution
dath.name = "Dark Vador";//③
dath.focelevel = 100;//③
dath.status = "Monsieur Dark";//③
** (En pensant) **
① Sécurisez la zone mémoire de l'instance et créez des champs. ② Créez un lien vers la zone mémoire créée dans ①. Vous pouvez maintenant accéder à la zone de mémoire créée en (1). ③ Remplacez la valeur du champ.
(code)
//Créer une variable de classe dath2
StChara dath = new StChara();
dath.name = "Dark Vador";
dath.focelevel = 100;
dath.status = "Monsieur Dark";
Stchara dath2;//(1) Définissez la variable de classe dath2.
dath2 = dath;//(2) Remplacez la destination de lien de dath par dath2. (Parce que la nouvelle instance n'est pas créée avec new)
** (En pensant) **
Puisque la variable de classe est une variable de type référence, la destination du lien est affectée.
//Classe de héros
public class Hero {
String name;
int hp;
Sword heroSword;//(1) Créez un champ heroSword de type épée.
void attack(){
System.out.println(this.name +"Est"+this.heroSword.name+"Attaqué avec!");//③
System.out.println("À l'ennemi"+this.heroSword.damage+"Points endommagés! !!");//③
}
}
//classe d'épée
public class Sword{
String name;
int damage;
}
//classe principale
public class Main {
public static void main(String[] args) {
Sword sword = new Sword();
sword.name = "Épée de feu";
sword.damage = 10;
Hero hero = new Hero();
hero.name = "Minato";
hero.hp = 100;
hero.heroSword = sword;//(2) Attribuez l'instance d'épée à l'attribut heroSord de l'instance de héros.
hero.attack();
}
}
** (Résultat de sortie) **
Minato a attaqué avec une épée de feu!
Infligé 10 points de dégâts à l'ennemi! !!
** (En pensant) ** (1) Déclarez la variable de classe de type Sword "heroSword" dans l'instance Hero. (2) Remplacez l'instance d'épée par heroSword. (3) Puisque l'instance d'épée est assignée à la variable de classe heroSword, "this.herosword.name" a la même signification que "sword.name", et le "nom" et les "dommages" de l'instance d'épée peuvent être référencés.
** (Supplément) ** "Relation dans laquelle une classe utilise un autre champ" = "a-une relation". Dans le code ci-dessus, ce serait "hero has-sword".
//Créer une instance de héros
Hero hero1 = new Hero();
hero1.name = "Minato";
hero1.hp = 100;
//Créer une instance de héros
Hero hero2 = new Hero();
hero2.name = "Asaka";
hero2.hp = 100;
//Créer une instance de l'assistant
Wizard wizard = new Wizard();
wizard.name = "Sugawara";
wizard.hp = 50;
wizard.heal(hero1);
wizard.heal(hero2);
public class Wizard {
String name;
int hp;
void heal(Hero heroX) {;//En utilisant une variable de classe comme argument, vous pouvez affecter une instance. En attribuant une instance, vous pouvez faire référence à la valeur de champ de l'instance.
heroX.hp+=10;
this.hp+=10;
System.out.println(heroX.name+"Récupéré 10 HP!");
System.out.println(heroX.name+"HP est"+heroX.hp);
System.out.println(this.name+"HP est"+this.hp);//Guérit le héros et le sorcier lui-même.
}
}
** (Résultat de sortie) **
Récupération de 10 HP de Minato!
Les PV de Minato sont de 110
Les PV de Sugawara sont de 60
Récupération de 10 HP d'Asaka!
Les PV d'Asaka sont de 110
Les PV de Sugawara sont de 70
** (En pensant) ** Le traitement initial (affectation de valeur, méthode) à exécuter lors de la création d'une instance est appelé un constructeur.
** (Méthode de déclaration) **
nom de la classe(Variables qui reçoivent des arguments){
this.Variable qui reçoit l'argument = valeur;
}
Peut être déclaré avec. À ce stade, la spécification de la valeur de retour comprenant «void» est NG.
(code)
public class Hero {
String name;
int hp;
Hero(String name) {//constructeur
this.hp = 100;
this.name = name;
}
** (En pensant) ** Plusieurs constructeurs portant le même nom peuvent être utilisés en modifiant le type d'argument et le nombre d'arguments. En outre, lors d'une surcharge, d'autres constructeurs peuvent être appelés et utilisés.
this(Nom de l'argument);
(code)
public class main {
public static void main(String[] args){
Cleric a = new Cleric("pasteur",10,10);
Cleric b = new Cleric("pasteur",10);
Cleric c = new Cleric("pasteur");
}
}
public class Cleric {
String name;
int hp = 50;
final static int HPMAX = 50;
int mp;
final static int MPMAX = 10;
public void selfAid() {
System.out.println(this.name + "Chanté d'auto-assistance!");
this.hp = HPMAX;
this.mp -= 5;
System.out.println("HP a récupéré au maximum.");
}
//constructeur
Cleric(String newName,int newHp,int newMp){
this.name = newName;
this.hp = newHp;
this.mp = newMp;
}
Cleric(String name,int hp){
this(name, hp, Cleric.HPMAX);//Puisque le champ constant est un membre statique qui appelle un autre traitement avec ceci ici, il peut être appelé avant même que l'instance soit créée.
}
Cleric(String name){
this(name,Cleric.HPMAX);
}
}
** (Résultat de sortie) **
Prêtre Une auto-assistance chantée!
HP a récupéré au maximum.
Le prêtre B a chanté l'auto-assistance!
HP a récupéré au maximum.
Le prêtre C a chanté l'auto-assistance!
HP a récupéré au maximum.
** (En pensant) ** Même si plusieurs instances sont créées à partir de la même classe, il est nécessaire de définir des valeurs et des méthodes communes (valeurs initiales, etc.) en tant que membres statiques.
** (Référence) Dans le diagramme précédent de Dark Vador ... **
** (Méthode de définition) **
Dans la classe de l'instance nom de variable de type de données statique // créer un champ statique
//Classe Stchara
static int firstLevel;
Dans la classe principale nom de classe de l'instance.nom de variable = valeur // attribuer une valeur au champ statique
//Classe Stchara
Stchara.firstLevel = 1;
** (Effet obtenu en définissant) **
-En créant un champ statique, la valeur du champ peut être appelée avec nom de classe.nom de variable
. (La valeur du champ est détenue par la classe elle-même)
-Les variables de classe sont disponibles avant la création de l'instance.
** (Méthode de définition) **
nom de méthode de valeur de retour statique{
Traitement du contenu
}
** (Effet obtenu en définissant) **
-En créant une méthode statique, vous pouvez appeler la méthode avec nom de classe.nom de méthode
. (La méthode est détenue par la classe elle-même)
-La méthode devient disponible avant même la création de l'instance.
** (Notes sur les méthodes statiques) ** -Assurez-vous d'utiliser des champs statiques comme champs à utiliser.
Recommended Posts