Monimutkaisten Luokkien Käyttö
Pyyhkäise näyttääksesi valikon
Luokkaolioiden käyttö toisessa luokassa
Tässä käsitellään monimutkaisempaa luokkien käyttöä, erityisesti luokkaolioiden hyödyntämistä toisen luokan sisällä.
Joukkue ja pelaajat
Kuvitellaan tilanne, jossa meillä on Team-luokka. Jokaisella joukkueella tulisi olla pelaajia. Voisimme täyttää players-kentän yksinkertaisilla String-arvoilla, jotka edustavat heidän nimiään, mutta tämä ei olisi paras käytäntö. Parempi ratkaisu on luoda Player-luokka omilla kentillään ja metodeillaan, ja sitten luoda taulukko Player-olioista Team-luokan sisälle.
Tarkastellaan esimerkkiä:
Team.java
1234567891011121314151617181920212223242526class 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"); } }
Kuten huomaat, käytämme Player-olioiden taulukkoa players-luokan Team-kentässä. Tästä voidaan tehdä muutama johtopäätös:
- Voimme luoda olioiden taulukoita itse luomastamme luokasta;
- Voimme käyttää yhden luokan olioita toisen luokan sisällä parantaaksemme kokonaislogiikkaa.
Mutta herää kysymys: Miten täytämme tämän taulukon?
Vastaus: Tätä varten meidän täytyy luoda useita Player-olioita ja lisätä ne pelaajien taulukkoon. Luodaan Dream Team päämetodissa ja katsotaan esimerkki:
Main.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package 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 + '}'; } }
Luoimme 3 Player-luokan oliota ja alustimme niiden kentät konstruktorin avulla. Sitten loimme taulukon, jonka tyyppi on Player, ja lisäsimme siihen Bobin, Alicen ja Johnin.
Seuraavaksi loimme Team-olion ja alustimme sen kentät konstruktorin avulla. Alustimme players[]-kentän aiemmin luodulla taulukolla.
Tulostamme olion konsoliin ja näemme, että Team-olion tulosteessa on Player-olioita.
Omistaja ja lemmikki
Tarkastellaan toista yksinkertaisempaa esimerkkiä. Oletetaan, että meillä on Owner ja Pet. Luomme kummallekin oman luokan.
Pet-luokalla on vain yksi kenttä – String name.
Owner-luokalla on kaksi kenttää – String name ja Pet pet.
Pet.java
123456789101112131415161718class 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; } }
Kuten huomaat, nämä kaksi luokkaa ovat myös yhteydessä toisiinsa, sillä Owner-luokalla on kenttä tyyppiä Pet (joka on itse luomamme luokka!).
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme