Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Användning av Komplexa Klasser | Klasser Avancerat
Java Fördjupad
course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Användning av Komplexa Klasser

Användning av klassobjekt i en annan klass

Nu kommer vi att diskutera mer avancerad användning av klasser, specifikt användning av klassobjekt inom en annan klass.

Lag och spelare

Föreställ dig en situation där vi har en Team-klass. Varje lag ska ha spelare. Vi skulle kunna fylla players-fältet med enkla String-värden som representerar deras namn, men det vore inte bästa praxis. Det är mycket bättre att skapa en Player-klass med egna fält och metoder och sedan skapa en array av Player-objekt inom Team-klassen. Låt oss titta på ett exempel:

Team.java

Team.java

copy
1234567891011121314151617181920212223242526
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"); } }

Som du kan se använder vi en array av Player-objekt i fältet players i klassen Team. Utifrån detta kan vi dra några slutsatser:

  1. Det är möjligt att skapa arrayer av objekt från egna klasser;
  2. Objekt från en klass kan användas inom en annan klass för att förbättra den övergripande logiken.

Men frågan uppstår: Hur fyller vi denna array?

Svar: För att göra detta behöver vi skapa flera Player-objekt och lägga till dem i arrayen av spelare. Låt oss skapa ett Dream Team i main-metoden och se ett exempel:

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
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 + '}'; } }

Vi skapade 3 objekt av klassen Player och initierade deras fält via konstruktorn. Därefter skapar vi en array av typen Player och lägger till Bob, Alice och John i den. Sedan skapar vi ett Team-objekt och initierar dess fält via konstruktorn. Fältet players[] initieras med den tidigare skapade arrayen. Vi skriver ut objektet till konsolen och ser att Team-objektet innehåller Player-objekt i utskriften.

Ägare och husdjur

Låt oss titta på ett annat enklare exempel. Antag att vi har en Owner och ett Pet. Vi skapar en separat klass för varje. Klassen Pet kommer endast att ha ett fält – String name. Klassen Owner kommer att ha två fält – String name och Pet pet.

Pet.java

Pet.java

copy
123456789101112131415161718
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; } }

Som du kan se är dessa två klasser också kopplade, eftersom klassen Owner har ett fält av typen Pet (vilket är klassen vi själva skapade!).

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Användning av Komplexa Klasser

Användning av klassobjekt i en annan klass

Nu kommer vi att diskutera mer avancerad användning av klasser, specifikt användning av klassobjekt inom en annan klass.

Lag och spelare

Föreställ dig en situation där vi har en Team-klass. Varje lag ska ha spelare. Vi skulle kunna fylla players-fältet med enkla String-värden som representerar deras namn, men det vore inte bästa praxis. Det är mycket bättre att skapa en Player-klass med egna fält och metoder och sedan skapa en array av Player-objekt inom Team-klassen. Låt oss titta på ett exempel:

Team.java

Team.java

copy
1234567891011121314151617181920212223242526
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"); } }

Som du kan se använder vi en array av Player-objekt i fältet players i klassen Team. Utifrån detta kan vi dra några slutsatser:

  1. Det är möjligt att skapa arrayer av objekt från egna klasser;
  2. Objekt från en klass kan användas inom en annan klass för att förbättra den övergripande logiken.

Men frågan uppstår: Hur fyller vi denna array?

Svar: För att göra detta behöver vi skapa flera Player-objekt och lägga till dem i arrayen av spelare. Låt oss skapa ett Dream Team i main-metoden och se ett exempel:

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
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 + '}'; } }

Vi skapade 3 objekt av klassen Player och initierade deras fält via konstruktorn. Därefter skapar vi en array av typen Player och lägger till Bob, Alice och John i den. Sedan skapar vi ett Team-objekt och initierar dess fält via konstruktorn. Fältet players[] initieras med den tidigare skapade arrayen. Vi skriver ut objektet till konsolen och ser att Team-objektet innehåller Player-objekt i utskriften.

Ägare och husdjur

Låt oss titta på ett annat enklare exempel. Antag att vi har en Owner och ett Pet. Vi skapar en separat klass för varje. Klassen Pet kommer endast att ha ett fält – String name. Klassen Owner kommer att ha två fält – String name och Pet pet.

Pet.java

Pet.java

copy
123456789101112131415161718
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; } }

Som du kan se är dessa två klasser också kopplade, eftersom klassen Owner har ett fält av typen Pet (vilket är klassen vi själva skapade!).

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1
some-alt