Kursinhalt
Java Erweitert
Java Erweitert
Verwendung Komplexer Klassen
Verwendung von Klassenobjekten in einer anderen Klasse
Nun werden wir die komplexere Verwendung von Klassen besprechen, 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 players
-Feld mit einfachen String
-Werten füllen, die ihre Namen darstellen, aber das wäre nicht die beste Praxis. Es wäre viel besser, eine Player
-Klasse mit eigenen Feldern und Methoden zu erstellen und dann ein Array von Player
-Objekten innerhalb der Team
-Klasse zu erstellen.
Betrachten wir ein Beispiel:
Team
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 players
-Feld der Team
-Klasse. Daraus können wir einige Schlussfolgerungen ziehen:
- Wir können Objekt-Arrays aus unserer eigenen erstellten Klasse erstellen;
- Wir können Objekte einer Klasse innerhalb einer anderen Klasse verwenden, um die gesamte Logik zu verbessern.
Aber die Frage stellt sich: Wie füllen wir dieses Array?
Antwort: Dazu müssen wir mehrere Player
-Objekte erstellen und sie dem Array von Spielern hinzufügen. Lassen Sie uns im Hauptprogramm ein Dream Team erstellen und ein Beispiel sehen:
Main
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 + '}'; } }
Wir haben 3 Objekte der Player
-Klasse erstellt und ihre Felder über den Konstruktor initialisiert. Dann erstellen wir ein Array mit dem Typ Player
und fügen Bob, Alice und John hinzu.
Als nächstes erstellen wir ein Team
-Objekt und initialisieren seine Felder über den Konstruktor. Wir initialisieren das players[]
-Feld mit dem zuvor erstellten Array.
Wir drucken das Objekt auf die Konsole und sehen, dass das Team
-Objekt Player
-Objekte in der Ausgabe hat.
Besitzer und Haustier
Schauen wir uns ein weiteres einfacheres Beispiel an. Angenommen, wir haben einen Owner
und ein Pet
. Wir werden für jeden eine separate Klasse erstellen.
Die Pet
-Klasse wird nur ein Feld haben - String name
.
Die Owner
-Klasse wird zwei Felder haben - String name
und Pet pet
.
Pet
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 verbunden, da die Klasse Owner
ein Feld vom Typ Pet
hat (welches die Klasse ist, die wir selbst erstellt haben!).
Danke für Ihr Feedback!