Konstruktor i Java


En konstruktor i Java använder man för att skapa ett objekt från en klass. Det är här man ger objektet de värden som man önskar att objektet ska ha.

Vad är en konstruktor i Java?

En konstruktor är en metod som man använder för att instansiera (skapa) ett objekt från en klass. När man kallar på en konstruktor från en klass, skapar konstruktorn ett objekt från motsvarande klass. Det är med hjälp av konstruktorn man anger de inparametrar (initialvärden), det vill säga, vilka attribut som objektet ska ha. I Java har alla klasser en konstruktor som standard, även om man inte har skapat en själv. Men för att kunna ange specifika attribut för ett objekt, måste man först skapa en konstruktor. En konstruktor har alltid samma namn som klassnamnet den tillhör.

En konstruktor är:

  • En metod som instansierar objekt från en klass.
  • Använder man för att ge specifika attribut till ett objekt.
  • Har samma namn som klassen den tillhör.
  • Returnerar inga värden.
  • Finns i alla klasser som standard, men behövs om man vill ge specifika attribut till ett objekt.

Hur fungerar en Konstruktor i Java?

När man vill skapa ett objekt så anropar man konstruktorn (constructor på engelska). Man säger att man instansierar ett objekt från en klass. När man skapar ett objekt, utför konstruktorn sina operationer först. Konstruktorn är alltså det första som blir anropat när man skapar ett objekt.

Man brukar säga att det finns tre typer av konstruktor i Java: Standard, No-arguments och Parameterized.

Konstruktor i Java
Konstruktor i Java
  • Default: Om du inte skapar någon konstruktor i din klass så sätter kompilatorn in en så kallad “standard-konstruktor” i din kod åt dig. Det är inget man ser i sin källkod (java-filen) eftersom den infogas i koden under kompileringen. Om du själv implementerar en konstruktor så kommer du inte längre få en standard-konstruktor från kompilatorn.
  • No-arguments: en konstruktor som inte har några input argument, som namnet tydligt antyder. No-arguments konstruktorn är liknande standard-konstruktorn, men no-arguments konstruktorn kan ha vilken kod som helst, till skillnad från standard-konstruktorn som är tom.
  • Parameterized: en konstruktor som har en eller flera inparametrar. E parameterized konstruktor använder man för att ge olika värden till de olika objekten.

Skapa en konstruktor i Java

I Java, använder man följande syntax för att ange en konstruktor som hanterar invärden (parameterized):

// Klassnamet måste vara densamma som klassnamnet
// namn1 och namn2 är inparametrarna till konstruktorn av en viss datatyp
Klassnamnet(datatyp namn1, datatyp namn2){  

    // "this" syftar till nuvarande objektets klassvariabel
    this.namn1 = namn1;                     
    this.namn2 = namn2;
    // osv..
}

Hur skapar man en konstruktor: 

  • Observera att konstruktorns namn måste vara detsamma som namnet för klassen.
  • Inparametrarna (namn1 och namn2) är typiskt detsamma som de klassvariabler man definierar när man skapar klassen, det vill säga, de attribut man vill ge till objektet man skapar.
  • Kommandot “this” syftar alltid till det nuvarande objektet. Det innebär att genom att skriva “this”, så tilldelar man klassvariabeln värdet från konstruktorn. Detta värdet blir alltså objektets unika värde.

Konstruktorn i Java används för att skapa objekt från en klass.

Exempel – Konstruktorn i Java

Fortsättning från föregående exempel -I följande kod är nu konstruktorn skapad i klassen hund:

//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
    Dog(String name, int age, String breed, String color){
        this.name = name;
        this.age = age;
        this.breed = breed;
        this.color = color;
    }

    //Definierar metoderna 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
    }

}

Själva konstruktorn ser ut såhär:

//Definiera konstruktorn
    Dog(String name, int age, String breed, String color){
        this.name = name;
        this.age = age;
        this.breed = breed;
        this.color = color;
    }

Vi kollar först på översta raden i konstruktorn. Vi har först själva namnet på konstruktorn (Dog). Namnet måste vara densamma som klassnamnet, alltså “Dog” i detta fall. Observera att klassnamn har stor bokstav i sitt namn som praxis

Dog(String name, int age, String breed, String color){

Inparametrarna i konstruktorn (String name, int age, String breed, String color) är som du ser densamma som de klassvariabler som vi definierade när vi skapade klassen (rad 5-8). Det vi säger är alltså; för att skapa objektet hund, krävs 4 stycken inparametrar som heter: name, age, breed och color. Inparametrarna kan förstås heta vad som helst, men för att inte blanda ihop dem med någon annan variabel, är det lämpligt att döpa parametrarna till samma namn som klassvariablerna.

I de resterande fyra raderna

this.name = name; 
this.age = age; 
this.breed = breed; 
this.color = color;

tilldelar vi parametrarna till klassvariablerna. Genom att skriva “this” framför parametrarna, vet vi att det är klassvariablerna för detta objekt som vi kommer att använda.

Observera skillnaden mellan konstruktorer och metoder. Konstruktorer använder vi för att skapa objekt, och metoder använder vi för att utföra operationer. I nästa avsnitt ska vi gå igenom hur man använder konstruktorn för att skapa ett objekt.

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!