[Java-Grundlagen] Was ist Klasse?

Einführung

Dieser Artikel ist [Easy Java](https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%84Java-%E7%AC % AC7% E7% 89% 88-% E3% 80% 8C% E3% 82% 84% E3% 81% 95% E3% 81% 97% E3% 81% 84% E3% 80% 8D% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-% E9% AB% 98% E6% A9% 8B-% E9% BA% BB% E5% A5% 88 / dp / 4815600848) Ich habe es geschrieben, um das Wissen zu organisieren, das ich selbst im Nachschlagewerk gelernt habe.

Was ist Klasse?

Eine Zusammenfassung von Zuständen, Eigenschaften und Funktionen, die sich auf Dinge im Allgemeinen beziehen

--field: Ein Mechanismus zur Darstellung des "Zustands / der Eigenschaft" einer Klasse --method: Ein Mechanismus zur Darstellung der "Funktion" einer Klasse --member: Feld, Methode ... etc.

Klassenerklärung

Die Klasse wird wie folgt deklariert:

python


Klasse Klassenname
{
Typname Feldname;
・ ・ ・
Rückgabetyp Methodenname(Argumentliste)
    {
Satz;
・ ・ ・
Ausdruck zurückgeben;
    }
・ ・ ・
}

Verwendung der Klasse

Nur eine Klasse zu deklarieren, sagt Ihnen nicht im Detail, was es ist. Daher ist es notwendig, ein Objekt zu erstellen.

Als Beispiel ersetzen wir es durch "Auto".

python


//Autoklasse
class Car
{
    //Feld
    int num; //Autokennzeichen
    double gas; //Benzinmenge
}

In der obigen Phase können Sie sehen, dass das Ding "Auto" "Nummer" und "Benzinmenge" hat. Schreiben Sie danach basierend auf der deklarierten Klasse einfach den Code, mit dem Sie ein Auto herstellen möchten.

―― Auf diese Weise wird jedes im Code erstellte Auto als Objekt / Instanz bezeichnet.

python


//Erstellen Sie ein Fahrzeugklassenobjekt
class Sample1
{
    public static void main(String[] args)
    {
        Car car1 = new Car();

        car1.num = 1234;
        car1.gas = 20.5;

        System.out.println("Die Autonummer ist" + car1.num + "ist.");
        System.out.println("Die Menge an Benzin" + car1.gas + "ist.");
    }
}

** Um eine Klasse zu verwenden, deklarieren Sie die Klasse und erstellen Sie ein Objekt. ** **.

Constructor Zusätzlich zu Feldern und Methoden können Sie Konstruktoren in Klassen schreiben.

Konstruktoren sind Methoden sehr ähnlich, aber

Da ist ein Unterschied.

python


class Car
{
	private int num;
	private double gas;

	// constructor
	public Car()
	{
		num = 0;
		gas = 0.0;
		System.out.println("Ich habe ein Auto gemacht.");
	}

	public void show()
	{
		System.out.println("Die Autonummer ist" + num + "ist.");
		System.out.println("Die Menge an Benzin" + gas + "ist.");
	}
}

class Sample
{
	public static void main(String[] args)
	{
		Car car1 = new Car();
		car1.show();
	}
}

Unten das Ausführungsergebnis

python


Ich habe ein Auto gemacht.
Die Autonummer ist 0.
Die Benzinmenge beträgt 0.Es ist 0.

Funktion der Klasse

Verkapselung

Eine Funktion, die Daten (Felder) und Funktionen (Methoden) in einer Klasse zusammenfasst und den zu schützenden Mitgliedern eine private Verbindung zuweist, sodass auf sie nicht ohne Erlaubnis zugegriffen werden kann.

Beispiel) Feld → privates Mitglied, Methode → öffentliches Mitglied

Auf diese Weise können Sie fehlerfreie Programme erstellen.

--public: Kann von außerhalb der Klasse aufgerufen werden --private: Zugriff von außerhalb der Klasse nicht möglich --Neither (weggelassen): Kann von der Klasse aus aufgerufen werden, die im "gleichen Paket" enthalten ist.

Überlast

Selbst innerhalb derselben Klasse können Methoden mit demselben Methodennamen, aber unterschiedlichen Argumenttypen und -nummern definiert werden.

python


class Car
{
	private int num;
	private double gas;

	public void setCar(int n)
	{
		num = n;
		System.out.println("Nummer" + num + "Ich habe es gemacht.");
	}

	public void setCar(double g)
	{
		gas = g;
		System.out.println("Die Menge an Benzin" + gas + "Ich habe es gemacht.");
	}

	public void setCar(int n, double g)
	{
		num = n;
		gas = g;
		System.out.println("Nummer" + num + "Benzinmenge" + gas + "Ich habe es gemacht.");
	}

	public void show()
	{
		System.out.println("Die Autonummer ist" + num + "ist.");
		System.out.println("Die Menge an Benzin" + gas + "ist.");
	}
}

class Sample
{
	public static void main(String[] args)
	{
		Car car1 = new Car();
		car1.setCar(1234, 20.5);
		car1.show();

		System.out.println("Ändern Sie nur die Fahrzeugnummer.");
		car1.setCar(2345);
		car1.show();

		System.out.println("Ändern Sie nur die Benzinmenge.");
		car1.setCar(30.5);
		car1.show();
	}
}

Das Ausgabeergebnis ist wie folgt.

python


Nummer 1234 und Benzinmenge 20.Ich habe es auf 5 gesetzt.
Die Autonummer ist 1234.
20 Benzin.Es ist 5.
Ändern Sie nur die Fahrzeugnummer.
Ich habe die Nummer in 2345 geändert.
Die Autonummer ist 2345.
20 Benzin.Es ist 5.
Ändern Sie nur die Benzinmenge.
30 Benzin.Ich habe es auf 5 gesetzt.
Die Autonummer ist 2345.
Die Benzinmenge beträgt 30.Es ist 5.

Der obige Code ruft drei Arten von setCar () -Methoden auf.

Dies ist sehr praktisch, da Sie für eine ähnliche Verarbeitung denselben Methodennamen verwenden können. * Beachten Sie jedoch, dass eine Überladung nur möglich ist, wenn die Argumenttypen oder -nummern unterschiedlich sind! </ font>

Erbe

In Java können Sie eine neue Klasse basierend auf der bereits erstellten Klasse erstellen.

  • Das Erstellen einer neuen Klasse wird als erweitert bezeichnet.

Am Beispiel eines Autos sieht es so aus:

python


Klasse Auto
{
Nummer;
Benzinmenge;
Funktion zur Anzeige von Anzahl und Menge des Benzins
}

Klasse Rennwagen erweitert Auto
{
Wettkampfkurs;
Funktion zur Anzeige des Wettkampfkurses;
}
  • Superklasse der Elternklasse "Auto"
  • Unterklasse der hinzugefügten Klasse "Rennwagen"

Unterklassen erben Mitglieder von Oberklassen.

* Hinweis: Mitglieder mehrerer Oberklassen können nicht von einer Unterklasse geerbt werden. </ font>

Zugang zu Mitgliedern

Auf private Mitglieder von Oberklassen kann auch von Unterklassen nicht zugegriffen werden.

Daher können Sie in der Oberklasse protected angeben.

--protected: Kann sowohl von Unterklassen als auch von Klassen, die zum selben Paket gehören, aufgerufen werden.

überschreiben

Sie können eine Methode definieren, die genau den gleichen Methodennamen, die gleiche Anzahl von Argumenten und den gleichen Typ wie die Superklasse hat.

python


class Car
{
	protected int num;
	protected double gas;

	public Car()
	{
		num = 0;
		gas = 0.0;
		System.out.println("Ich habe ein Auto gemacht.");
	}

	public Car(int n, double g)
	{
		num = n;
		gas = g;
		System.out.println("Nummer" + num + "Benzinmenge" + gas + "Erstellt ein Auto.");
	}

	public void setCar(int n, double g)
	{
		num = n;
		gas = g;
		System.out.println("Nummer" + num + "Benzinmenge" + gas + "Ich habe es gemacht.");
	}

	public void show()
	{
		System.out.println("Die Autonummer ist" + num + "ist.");
		System.out.println("Die Menge an Benzin" + gas + "ist.");
	}
}

class RacingCar extends Car
{
	private int course;

	public RacingCar_11()
	{
		course = 0;
		System.out.println("Ich habe einen Rennwagen gemacht.");
	}

	public void setCourse(int c)
	{
		course = c;
		System.out.println("Kurs Nummer" + course + "Ich habe es gemacht.");
	}

	public void show()
	{
		System.out.println("Die Nummer des Rennwagens ist" + num + "ist.");
		System.out.println("Die Menge an Benzin" + gas + "ist.");
		System.out.println("Die Kursnummer ist" + course + "ist.");
	}
}

class Sample
{
	public static void main(String[] args)
	{
		RacingCar rccar1 = new RacingCar();
		rccar1.setCar(1234, 20.5);
		rccar1.setCourse(5);
		rccar1.newShow();
	}
}

Unten das Ausführungsergebnis

python


Ich habe ein Auto gemacht.
Ich habe einen Rennwagen gemacht.
Nummer 1234 und Benzinmenge 20.Ich habe es auf 5 gesetzt.
Ich habe die Kursnummer auf 5 geändert.
Die Rennwagennummer ist 1234.
20 Benzin.Es ist 5.
Die Kursnummer ist 5.

Als ich ein Unterklassenobjekt erstellt und die show () -Methode aufgerufen habe, wurde die show () -Methode der Unterklasse aufgerufen.

* Wenn der Methodenname, die Anzahl der Argumente und der Typ genau identisch sind, wird anscheinend die neu definierte Methode in der Unterklasse aufgerufen. </ font>

final Sie können das Überschreiben vermeiden, indem Sie der Superklassenmethode final voranstellen.

Referenz

  • [Easy Java](https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%84Java-%E7%AC%AC7% E7% 89% 88-% E3% 80% 8C% E3% 82% 84% E3% 81% 95% E3% 81% 97% E3% 81% 84% E3% 80% 8D% E3% 82% B7% E3 % 83% AA% E3% 83% BC% E3% 82% BA-% E9% AB% 98% E6% A9% 8B-% E9% BA% BB% E5% A5% 88 / dp / 4815600848)

Recommended Posts