Kursinhalt
Java Erweitert
Java Erweitert
Verwendung Komplexer Klassen
Verwendung von Klassenobjekten in einer anderen Klasse
Nun besprechen wir die komplexere Nutzung von Klassen, insbesondere die Verwendung von Klassenobjekten innerhalb einer anderen Klasse.
Team und Spieler
Stellen wir uns eine Situation vor, in der wir eine Team
-Klasse haben. Jedes Team sollte Spieler haben. Wir könnten das Feld players
mit einfachen String
-Werten füllen, die ihre Namen repräsentieren, aber das wäre nicht die beste Vorgehensweise. Es ist wesentlich besser, eine Player
-Klasse mit eigenen Feldern und Methoden zu erstellen und dann ein Array von Player
-Objekten innerhalb der Team
-Klasse zu verwenden.
Betrachten wir ein Beispiel:
Team.java
class Team { String title; String country; Player[] players; void play() { System.out.println("Team " + title + "is playing!"); } } class Player { String name; int age; int yearsOfExperience; public Player(String name, int age, int yearsOfExperience) { this.name = name; this.age = age; this.yearsOfExperience = yearsOfExperience; } void introduce() { System.out.println("Hi, my name is " + name + ", I am " + age + " years old and have " + yearsOfExperience + " years of experience"); } }
Wie Sie sehen können, verwenden wir ein Array von Player
-Objekten im Feld players
der Klasse Team
. Daraus lassen sich einige Schlussfolgerungen ziehen:
- Es können Objekt-Arrays aus selbst erstellten Klassen erzeugt werden;
- Objekte einer Klasse können innerhalb einer anderen Klasse verwendet werden, um die Gesamtlogik zu verbessern.
Es stellt sich jedoch die Frage: Wie füllen wir dieses Array?
Antwort: Dazu müssen mehrere Player
-Objekte erstellt und dem Array von Spielern hinzugefügt werden. Im Folgenden wird im Hauptprogramm ein Dream Team erstellt und ein Beispiel gezeigt:
Main.java
package com.example; import java.util.Arrays; public class Main { public static void main(String[] args) { Player bob = new Player("Bob", 32, 5); Player alice = new Player("Alice", 28, 8); Player john = new Player("John", 41, 20); Player[] players = {bob, alice, john}; Team dreamTeam = new Team("Dream Team", "USA", players); System.out.println(dreamTeam); } } class Team { String title; String country; Player[] players; public Team(String title, String country, Player[] players) { this.title = title; this.country = country; this.players = players; } void play() { System.out.println("Team " + title + "is playing!"); } @Override public String toString() { return "Team{" + "title='" + title + '\'' + ", country='" + country + '\'' + ", players=" + Arrays.toString(players) + '}'; } } class Player { String name; int age; int yearsOfExperience; public Player(String name, int age, int yearsOfExperience) { this.name = name; this.age = age; this.yearsOfExperience = yearsOfExperience; } void introduce() { System.out.println("Hi, my name is " + name + ", I am " + age + " years old and have " + yearsOfExperience + " years of experience"); } @Override public String toString() { return "Player{" + "name='" + name + '\'' + ", age=" + age + ", yearsOfExperience=" + yearsOfExperience + '}'; } }
Es wurden 3 Objekte der Klasse Player
erstellt und deren Felder über den Konstruktor initialisiert. Anschließend wird ein Array vom Typ Player
erstellt und Bob, Alice und John hinzugefügt.
Danach wird ein Team
-Objekt erstellt und dessen Felder über den Konstruktor initialisiert. Das Feld players[]
wird mit dem zuvor erstellten Array initialisiert.
Das Objekt wird auf der Konsole ausgegeben, wobei im Ergebnis zu sehen ist, dass das Team
-Objekt Player
-Objekte enthält.
Besitzer und Haustier
Betrachten wir ein weiteres, einfacheres Beispiel. Angenommen, es gibt einen Owner
und ein Pet
. Für jede Klasse wird eine eigene Klasse erstellt.
Die Klasse Pet
besitzt nur ein Feld – String name
.
Die Klasse Owner
besitzt zwei Felder – String name
und Pet pet
.
Pet.java
class Pet { String name; public Pet(String name) { this.name = name; } } class Owner { String name; Pet pet; public Owner(String name, Pet pet) { this.name = name; this.pet = pet; } }
Wie Sie sehen können, sind diese beiden Klassen ebenfalls miteinander verbunden, da die Klasse Owner
ein Feld vom Typ Pet
besitzt (welches die von uns selbst erstellte Klasse ist!).
Danke für Ihr Feedback!