Bruk av Komplekse Klasser
Bruk av klasseobjekter i en annen klasse
Nå skal vi diskutere 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 skal ha spillere. Vi kunne 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 ser, bruker vi et array av Player-objekter i players-feltet til Team-klassen. Ut fra dette kan vi trekke noen konklusjoner:
- Vi kan opprette arrayer av objekter fra våre egne klasser;
- Vi kan bruke objekter fra én klasse 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 lage et Drømmelag 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 klassen Player og initialiserte feltene deres gjennom konstruktøren. Deretter lager vi et array med typen Player og legger til Bob, Alice og John i det.
Deretter oppretter vi et Team-objekt og initialiserer feltene gjennom konstruktøren. Vi initialiserer feltet players[] med det tidligere opprettede arrayet.
Vi skriver ut objektet til konsollen og ser at Team-objektet har 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.
Klassen Pet vil kun ha ett felt – String name.
Klassen Owner 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 opprettet!).
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 diskutere 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 skal ha spillere. Vi kunne 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 ser, bruker vi et array av Player-objekter i players-feltet til Team-klassen. Ut fra dette kan vi trekke noen konklusjoner:
- Vi kan opprette arrayer av objekter fra våre egne klasser;
- Vi kan bruke objekter fra én klasse 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 lage et Drømmelag 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 klassen Player og initialiserte feltene deres gjennom konstruktøren. Deretter lager vi et array med typen Player og legger til Bob, Alice og John i det.
Deretter oppretter vi et Team-objekt og initialiserer feltene gjennom konstruktøren. Vi initialiserer feltet players[] med det tidligere opprettede arrayet.
Vi skriver ut objektet til konsollen og ser at Team-objektet har 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.
Klassen Pet vil kun ha ett felt – String name.
Klassen Owner 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 opprettet!).
Takk for tilbakemeldingene dine!