[JAVA] Konzept der Instanz ・ Klassentypvariable ・ Konstruktor ・ Statisches Element

Was ist eine Klassentypvariable?

Details zum Zeitpunkt der Instanziierung

(Code)

//Generieren Sie ein Instanz-Dutzend Vader
StChara dath = new StChara();//① ・ ②

//Feldwert ersetzen
dath.name = "Darth Vader";//③
dath.focelevel = 100;//③
dath.status = "Sir Dark";//③

** (Nachdenken) ** スクリーンショット 2018-02-25 10.35.26.png

① Sichern Sie den Speicherbereich der Instanz und erstellen Sie Felder. ② Erstellen Sie eine Verknüpfung zu dem in ① erstellten Speicherbereich. Jetzt können Sie auf den in (1) erstellten Speicherbereich zugreifen. ③ Ersetzen Sie den Feldwert.

Klassenvariablen sind Referenztypen

(Code)

//Erstellen Sie die Klassenvariable dath2
StChara dath = new StChara();
dath.name = "Darth Vader";
dath.focelevel = 100;
dath.status = "Sir Dark";
Stchara dath2;//(1) Definieren Sie die Klassenvariable dath2.
dath2 = dath;//(2) Ersetzen Sie das Verbindungsziel von dath durch dath2. (Weil keine neue Instanz mit new erstellt wird)

** (Nachdenken) ** スクリーンショット 2018-02-25 13.39.22.png

Da die Klassenvariable eine Referenztypvariable ist, wird das Verbindungsziel zugewiesen.

Verwenden Sie Klassentypvariablen für Felder

//Heldenklasse
public class Hero {
	String name;
	int hp;
	Sword heroSword;//(1) Erstellen Sie ein Schwert vom Typ heroSword.
	void attack(){
		System.out.println(this.name +"Ist"+this.heroSword.name+"Angegriffen mit!");//③
		System.out.println("Zum Feind"+this.heroSword.damage+"Beschädigte Punkte! !!");//③
	}
}
//Schwertklasse
public class Sword{
	String name;
	int damage;
}
//Hauptklasse
public class Main {
	public static void main(String[] args) {
		Sword sword = new Sword();
		sword.name = "Schwert des Feuers";
		sword.damage = 10;

		Hero hero = new Hero();
		hero.name = "Minato";
		hero.hp = 100;
		hero.heroSword = sword;//(2) Weisen Sie die Schwertinstanz dem heroSord-Attribut der Heldeninstanz zu.
		hero.attack();
	}
}

** (Ausgabeergebnis) **

Minato griff mit einem Feuerschwert an!
Fügte dem Feind 10 Schadenspunkte zu! !!

** (Nachdenken) ** (1) Deklarieren Sie die Klassenvariable vom Typ Schwert "heroSword" in der Hero-Instanz. (2) Ersetzen Sie heroSword durch die Schwertinstanz. (3) Da die Schwertinstanz der Klassenvariablen heroSword zugeordnet ist, hat "this.herosword.name" dieselbe Bedeutung wie "Schwert.name", und auf "Name" und "Schaden" der Schwertinstanz kann verwiesen werden.

** (Ergänzung) ** "Beziehung, in der eine Klasse ein anderes Feld verwendet" = "hat eine Beziehung". Im obigen Code wäre es "Held hat Schwert".

Verwenden Sie Klassentypvariablen in Methodenargumenten und Rückgabewerten

//Erstelle eine Heldeninstanz
Hero hero1 = new Hero();
hero1.name = "Minato";
hero1.hp = 100;
//Erstelle eine Heldeninstanz
Hero hero2 = new Hero();
hero2.name = "Asaka";
hero2.hp = 100;
//Assistenteninstanz erstellen
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) {;//Durch Verwenden einer Klassenvariablen als Argument können Sie eine Instanz zuweisen. Durch Zuweisen einer Instanz können Sie auf den Feldwert der Instanz verweisen.
		heroX.hp+=10;
		this.hp+=10;
		System.out.println(heroX.name+"10 HP wiederhergestellt!");
		System.out.println(heroX.name+"HP ist"+heroX.hp);
		System.out.println(this.name+"HP ist"+this.hp);//Heilt den Helden und den Zauberer selbst.
	}

}

** (Ausgabeergebnis) **

10 Minatos HP wiederhergestellt!
Minatos HP beträgt 110
Sugawaras HP beträgt 60
10 HP Asaka wiederhergestellt!
Asakas HP beträgt 110
Sugawaras HP beträgt 70

Was ist ein Konstruktor?

Konzept des Konstruktors

** (Nachdenken) ** Die anfängliche Verarbeitung (Wertzuweisung, Methode), die beim Erstellen einer Instanz ausgeführt werden soll, wird als Konstruktor bezeichnet.

** (Deklarationsmethode) **

Name der Klasse(Variablen, die Argumente erhalten){  
  this.Variable, die das Argument = Wert erhält;
}

Kann mit deklariert werden. Zu diesem Zeitpunkt ist die Angabe des Rückgabewerts einschließlich "void" NG.

(Code)

public class Hero {
	String name;
	int hp;

	Hero(String name) {//Konstrukteur
		this.hp = 100;
		this.name = name;
	}

Konstruktorüberlastung

** (Nachdenken) ** Durch Ändern des Argumenttyps und der Anzahl der Argumente können mehrere Konstruktoren mit demselben Namen verwendet werden. Beim Überladen können auch andere Konstruktoren aufgerufen und verwendet werden.

this(Argumentname);

(Code)


public class main {
	public static void main(String[] args){
	  Cleric a = new Cleric("Geistliche",10,10);
	  Cleric b = new Cleric("Geistliche",10);
	  Cleric c = new Cleric("Geistliche");
	}
}

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 + "Gesungene Selbsthilfe!");
		this.hp = HPMAX;
		this.mp -= 5;
		System.out.println("HP hat sich maximal erholt.");
	}
//Konstrukteur
	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);//Da das Konstantenfeld ein statisches Element ist, das hier eine andere Verarbeitung aufruft, kann es aufgerufen werden, bevor die Instanz erstellt wird.
	}

	Cleric(String name){
		this(name,Cleric.HPMAX);
	}
}

** (Ausgabeergebnis) **

Priester Eine gesungene Selbsthilfe!
HP hat sich maximal erholt.
Priester B sang Selbsthilfe!
HP hat sich maximal erholt.
Priester C sang Selbsthilfe!
HP hat sich maximal erholt.

Statisches Mitglied

Die Idee der statischen Mitglieder

** (Nachdenken) ** Selbst wenn mehrere Instanzen aus derselben Klasse erstellt werden, müssen gemeinsame Werte und Methoden (Anfangswerte usw.) als statische Elemente definiert werden.

** (Referenz) Im vorherigen Darth Vader-Diagramm ... ** スクリーンショット 2018-02-25 12.01.51.png

Statisches Feld

** (Definitionsmethode) ** Innerhalb der Klasse der Instanz statischer Datentyp Variablenname // statisches Feld erstellen

//Stchara-Klasse
static int firstLevel;

In der Hauptklasse Klassenname der Instanz.Variablenname = Wert // statischem Feld Wert zuweisen

//Stchara-Klasse
Stchara.firstLevel = 1;

** (Effekt durch Definieren erhalten) **

Statische Methode

** (Definitionsmethode) **

Name der statischen Rückgabewertmethode{
Inhalte verarbeiten
 }

** (Effekt durch Definieren erhalten) **

** (Hinweise zu statischen Methoden) **

Recommended Posts

Konzept der Instanz ・ Klassentypvariable ・ Konstruktor ・ Statisches Element
[Java] Klassen, Konstruktoren, statische Elemente
Interner Klassentyp: Mit oder ohne Statik
[Java] Unterschiede zwischen Instanzvariablen und Klassenvariablen
Java-Programmierung (statische Klausel und "Klassenvariablen")
[Ruby] Grundkenntnisse über Klasseninstanzvariablen usw.
[Einführung in Java] Variablenbereich (Bereich, lokale Variable, Instanzvariable, statische Variable)
[Java Silver] Was sind Klassenvariablen, Instanzvariablen und lokale Variablen?