Objekt i Java


Nyckelord: Objekt, Instans, Klass, Objektorienterad programmering, Inkapsling

Object Java

I den här artikeln ska vi lära oss vad ett objekt är i Java. Inom objektorienterad programmering så använder vi objekt och klasser för att bygga upp våra program.

Vad är ett objekt i Java?

Ett objekt är vad som kallas för en instans av en klass och innehåller de attribut och egenskaper som klassen anger att varje objekt från den klassen ska ha. Det går självklart bra att skapa flera olika objekt från samma klass, och som vi har varit inne på tidigare så är varje objekt oberoende av varandra, fastän de kommer från samma klass.

Detta kallas ofta för inkapsling (engelska: encapsulation) vilket helt enkelt betyder att objektet är helt oberoende av andra objekt eller kod eftersom objektet enbart utför det som den är instruerad att göra. Det medför att en programmerare därför bara behöver veta hur man kommunicerar med objektet, utan att nödvändigtvis veta hur objektet utför uppgiften.

Kort sammanfattat så är ett objekt i Java:

  • En instans av en klass och håller de attribut som är angivna vid instansieringen.
  • Kan utföra de metoder som är angivna i motsvarande klass.
  • Inkapslad, vilket innebär att den är oberoende av annan kod. Även två objekt från samma klass är oberoende av varandra.

Hur fungerar objekt i Java?

Man kan beskriva det som att ett objekt i Java har tre egenskaper:

  1. Tillstånd: representerar den data/värde som ett objekt har.
  2. Beteende: representerar funktionaliteten hos ett objekt.
  3. Identitet: används av JVM för att identifiera varje objekt unikt. Värdet på identifikationen är inget som är synligt externt utan används internt av JVM.

När vi arbetar med objekt så är det uteslutande de två första egenskaperna vi fokuserar på, det tillstånd som ett objekt har och dess beteende.

Till exempel, om vårt objekt är en bil så är:

  • Tillstånd. Färg, årsmodell, märke, med mera.
  • Beteende: köra framåt, tuta, svänga, med mera.
Objekt object java

Beteenden för ett objekt specificeras i de metoder som klassens innehåller.

Ett objekt i Java kan vara i princip precis vad som helst, eftersom det är du själv som avgör hur objektet definieras när du skapar klassen. Man brukar säga att ett objekt är en instans av en klass.

Instansvariabler

Som vi nämnde tidigare så brukar man säga att ett objekt är en instans av en klass. De attributen som ska definieras när man skapar ett objekt kallas därför naturligt för instansvariabler. Varje objekt kan ha olika instansvariabler, trots att de kommer från samma klass.

Hur skapar man ett objekt i Java?

Vi använder nyckelordet new tillsammans med klassens konstruktor för att skapa ett objekt. En konstruktor liknar en metod och har samma namn som klassen. Vi kommer att titta närmare på vad en konstruktor i Java är på nästa sida, men nu nöjer vi oss med att konstatera att den används för att instansiera ett objekt.

Vidare, praxis är att namnet på objektet börjar med liten bokstav.

Syntax: Skapa ett objekt i Java

Följande syntax används för att instansiera ett objekt med inparametrar

// Syntax för objekt med inparametrar
KlassNamn objektNamn = new KlassNamn(datatyp parameter1, ...);

Innanför parentesen så anger vi de inparametrar som konstruktorn behöver. Detta är alltså de attributen som objektet ska få.

Syntax: Skapa ett objekt i Java utan inparametrar

Om den konstruktor som klassen har inte kräver några inparametrar för att skapa ett objekt lämnar man helt enkelt parentesen tom.

// Syntax för objekt utan inparametrar
KlassNamn objektNamn = new KlassNamn();

Exempel: Objekt i Java

Nu ska vi se två exempel på hur vi kan skapa objekt i Java. Än en gång, vi kommer referera till klassens konstruktor under dessa exempel, men oroa dig inte om det är något du inte känner igen, vi kommer som sagt titta närmare på konstruktorn i nästa artikel.

Exempel 1: Skapa ett objekt från en klass i Java

I föregående artikel beskrev vi klassen hund enligt koden, där vi också har lagt till konstruktorn för klassen.

//Skapar klassen "Dog". Praxis är att klassnamn har stor bokstav
class Dog {

    //Definierar tillstånden/attributen för klassen hund
    String name;
    int age;
    String breed;
    String color;

    //Definiera konstruktorn (mer om det i nästa artikel) 
    Dog(String name, int age, String breed, String color){
        this.name = name;
        this.age = age;
        this.breed = breed;
        this.color = color;
    }

    //Definierar metoderna (egenskaperna) för klassen hund
    void bark(){
         //Innehåller information om hur hunden gör när den skäller
    }

    void eat(){
         //Innehåller information om hur hunden gör när den äter
    }

    void sleep(){
         //Innehåller information om hur hunden gör när den sover
    }
Objekt Java Exempel Övningsuppgift

Figur 1: Attribut och egenskaper för exemplet med objektet hund

Vi ska nu i detta exempel skapa två stycken hundar, alltså två stycken objekt från samma klass:

Hund 1

  • Namn: Bosse
  • Ålder: 3
  • Ras: Terrier
  • Färg: Brun

Hund 2

  • Namn: Båtsman
  • Ålder: 5
  • Ras: Sankt Bernhard
  • Färg: Svart

Vi skapar nu dessa två objekt i main-metoden:

    // Main-metoden
    public static void main(String args[]){
        Dog dog = new Dog("Bosse", 3, "Terrier", "Brun");
        Dog dog2 = new Dog("Båtsman", 5, "Sankt Bernhard", "Svart");
    }

Vi har nu två stycken objekt av typen Dog. Det ena objektet heter “dog” och det andra objektet heter “dog2“, och vi kan exempelvis anropa metoderna i vardera objekt enligt rad 38, 39 och 40 som vi lägger till i main-metoden.

    // Main-metoden
    public static void main(String args[]){
        Dog dog = new Dog("Bosse", 3, "Terrier", "Brun");
        Dog dog2 = new Dog("Båtsman", 5, "Sankt Bernhard", "Svart");

        // Anropa metoder
        dog.eat();
        dog2.bark();
        dog.sleep();
    }
}

Resultatet vi får blir då:

Bosse äter 
Båtsman skäller
Bosse: zZZzzZzzZ

Vilket låter väldigt trevligt för Bosse, att han först får äta mat och sen ta en liten tupplur. Som du ser så skiljer de två hundarna sig åt, men vi kan trots det använda samma klass för att skapa objekten (de har ju alla samma egenskaper). Detta är väldigt användbart när man vill programmera flera objekt av samma sort, till exempel, kanske vill du programmera en hel hundgård av kompisar till Bosse och Båtsman?

Exempel 2: Skapa ett smartphone objekt från en klass

Vi tar ett till exempel bara för att det ska bli extra tydligt. I det här exemplet ska vi skapa två mobiltelefoner och låt oss börja med att titta på vår klass som vi har döpt till SmartPhone som innehåller följande

Object Java
public class SmartPhone {

    // Variabler vi använder i konstruktorn
    private String brand;
    private String model;

    // Klassens konstruktor
    SmartPhone(String brand, String model){
        this.brand = brand;
        this.model = model;

    }

    public void call(){

        System.out.println("Nu ringer: " + brand + " " + model);
    }

    public void sendText(){

        System.out.println( brand + " " + model + " skickar ett SMS");
    }
}

Det som är viktigt att notera här är hur många inparametrar klassens konstruktor kräver. Kom ihåg att inparametrar som konstruktorn behöver är de attributen som objektet ska få.

Om vi sedan tar och skapar två telefoner, eller rättare sagt, två objekt:

public class testClass {

    public static void main(String args[]) {

        // Skapar ett objekt för en iPhone
        SmartPhone iPhone = new SmartPhone("iPhone" , "12");

        iPhone.call();
        iPhone.sendText();

        // Skapar ett objekt för en Samsung
        SmartPhone samsung = new SmartPhone("Samsung", "Galaxy S20"); 
        
        samsung.call();
        samsung.sendText();
                
    }
}

Det vi har gjort är att skapa ett objekt för en iPhone (rad 5) och en Samsung (rad 12). Vi har skapat objekten genom att först ange namnet på klassen, SmartPhone, följt av det namn som vi vill ge vårt objekt. Sedan så skriver vi new följt av klassens namn igen. Viktigt att notera att innanför parentesen så ger vi två inparametrar och båda är datatyp String.

Hur man vet hur många inparametrar som behövs och av vilken datatyp? Det bestämmer vi i klassens konstruktor.

Om vi tar och exekverar koden ovan så får vi resultatet:

Nu ringer: iPhone 12
iPhone 12 skickar ett SMS
Nu ringer: Samsung Galaxy S20
Samsung Galaxy S20 skickar ett SMS

Sammanfattning: Objekt i Java

Ett objekt är en instans av en klass och innehåller de attribut och egenskaper som klassen anger att varje objekt från den klassen ska ha. Varje objekt är oberoende av varandra, fastän de kommer från samma klass, vilket kallas för inkapsling (engelska: encapsulation). Ett objekt består av tillstånd och beteenden. Till exempel för en bil så skulle tillstånden kunna vara bilens färg eller märke, medans beteenden är något bilen kan utföra, som att köra och svänga.

Praxis när man instansierar ett objekt är att namnet på objektet börjar med liten bokstav.

Syntax för att skapa ett objekt

// Syntax för objekt
KlassNamn objektNamn = new KlassNamn(datatyp parameter1, …);

Vanliga frågor och svar: Objekt i Java

Vad menas med att instansiera ett objekt?

Ett objekt är vad som kallas för en instans av en klass och när vi instansierar ett objekt så betyder det helt enkelt att vi skapar ett objekt från en klass.

Hur skapar man ett objekt i Java?

Syntax för att skapa ett objekt är:
KlassNamn objektNamn = new KlassNamn(datatyp parameter1, …);

Det betyder att vi använder nyckelordet new tillsammans med klassens konstruktor för att skapa ett objekt. En konstruktor liknar en metod och har samma namn som klassen. Innanför parentesen så anger vi de inparametrar som konstruktorn behöver och det är de attributen som objektet ska få. Om den konstruktor som klassen har inte kräver några inparametrar för att skapa ett objekt lämnar man helt enkelt parantesen tom.

Vad är egentligen ett objekt och vad är det för skillnad mot en klass?

Enkelt förklarat så kan man beskriva det som att skillnaden mellan en klass och ett objekt är att en klass är en mall för objekt. Om vi tar ett exempel med en bil så är en klass den mall/ritning som beskriver vad bilen ska bestå av och vad bilen ska kunna utföra. Ett objekt är då en bil som är skapad utifrån den mallen, eller rättare sagt, av den klassen.

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!