Bruk av Komplekse Klasser
Bruk av klasseobjekter i en annen klasse
Nå skal vi se på mer avansert bruk av klasser, spesielt bruk av klasseobjekter innenfor en annen klasse.
Lag og spillere
La oss tenke oss en situasjon der vi har en Team
-klasse. Hvert lag bør ha spillere. Vi kunne ha fylt players
-feltet med enkle String
-verdier som representerer navnene deres, men det ville ikke vært beste praksis. Det er mye bedre å lage en Player
-klasse med egne felter og metoder, og deretter opprette et array av Player
-objekter i Team
-klassen.
La oss se på et eksempel:
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"); } }
Som du kan se, bruker vi et array av Player
-objekter i players
-feltet til Team
-klassen. Ut fra dette kan vi trekke noen konklusjoner:
- Det er mulig å opprette arrayer av objekter fra egenutviklede klasser;
- Objekter fra én klasse kan brukes i en annen klasse for å forbedre den overordnede logikken.
Men spørsmålet oppstår: Hvordan fyller vi dette arrayet?
Svar: For å gjøre dette må vi opprette flere Player
-objekter og legge dem til i arrayet av spillere. La oss opprette et Dream Team i main-metoden og se et eksempel:
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 + '}'; } }
Vi opprettet 3 objekter av Player
-klassen og initialiserte feltene deres via konstruktøren. Deretter oppretter vi et array med Player
-typen og legger til Bob, Alice og John i det.
Deretter oppretter vi et Team
-objekt og initialiserer feltene via konstruktøren. Vi initialiserer players[]
-feltet med det tidligere opprettede arrayet.
Vi skriver ut objektet til konsollen og ser at Team
-objektet inneholder Player
-objekter i utdataene.
Eier og kjæledyr
La oss se på et annet, enklere eksempel. La oss si at vi har en Owner
og et Pet
. Vi lager en egen klasse for hver av dem.
Pet
-klassen vil kun ha ett felt – String name
.
Owner
-klassen vil ha to felt – String name
og 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; } }
Som du kan se, er disse to klassene også koblet sammen, ettersom Owner
-klassen har et felt av typen Pet
(som er klassen vi selv har laget!).
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 2.63
Bruk av Komplekse Klasser
Sveip for å vise menyen
Bruk av klasseobjekter i en annen klasse
Nå skal vi se på mer avansert bruk av klasser, spesielt bruk av klasseobjekter innenfor en annen klasse.
Lag og spillere
La oss tenke oss en situasjon der vi har en Team
-klasse. Hvert lag bør ha spillere. Vi kunne ha fylt players
-feltet med enkle String
-verdier som representerer navnene deres, men det ville ikke vært beste praksis. Det er mye bedre å lage en Player
-klasse med egne felter og metoder, og deretter opprette et array av Player
-objekter i Team
-klassen.
La oss se på et eksempel:
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"); } }
Som du kan se, bruker vi et array av Player
-objekter i players
-feltet til Team
-klassen. Ut fra dette kan vi trekke noen konklusjoner:
- Det er mulig å opprette arrayer av objekter fra egenutviklede klasser;
- Objekter fra én klasse kan brukes i en annen klasse for å forbedre den overordnede logikken.
Men spørsmålet oppstår: Hvordan fyller vi dette arrayet?
Svar: For å gjøre dette må vi opprette flere Player
-objekter og legge dem til i arrayet av spillere. La oss opprette et Dream Team i main-metoden og se et eksempel:
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 + '}'; } }
Vi opprettet 3 objekter av Player
-klassen og initialiserte feltene deres via konstruktøren. Deretter oppretter vi et array med Player
-typen og legger til Bob, Alice og John i det.
Deretter oppretter vi et Team
-objekt og initialiserer feltene via konstruktøren. Vi initialiserer players[]
-feltet med det tidligere opprettede arrayet.
Vi skriver ut objektet til konsollen og ser at Team
-objektet inneholder Player
-objekter i utdataene.
Eier og kjæledyr
La oss se på et annet, enklere eksempel. La oss si at vi har en Owner
og et Pet
. Vi lager en egen klasse for hver av dem.
Pet
-klassen vil kun ha ett felt – String name
.
Owner
-klassen vil ha to felt – String name
og 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; } }
Som du kan se, er disse to klassene også koblet sammen, ettersom Owner
-klassen har et felt av typen Pet
(som er klassen vi selv har laget!).
Takk for tilbakemeldingene dine!