LÄR DIG JAVA

Skapa ett objekt från en klass i Java


För att skapa ett objekt i Java anropar man klassens konstruktor som deklarerar, instansierar och initierar det nya objektet.

Hur skapar man ett objekt från en klass i Java?

I Java skapar man ett objekt från en klass med tre steg:

  • Deklarering
  • Instansiering
  • Initiering.

Ett objekt skapas genom tre steg: deklarering, instansiering samt initiering.

För att skapa ett objekt anropar man klassens konstruktor, där man anger de attribut som man vill att objektet ska få.

Skapa ett objekt i Java

Man skapar ett objekt genom deklarering, instansiering och instansiering.

Deklarering: 

En deklaration som Dog dog; skapar en referensvariabel, inte ett hundobjekt. Variabeln kan senare tilldelas en referens som skapas med new Dog(...).

Instansiering:

Uttrycket new skapar ett nytt objekt, anropar en tillämplig konstruktor och ger en referens till objektet.

Initiering:

Initieringen sker när man tilldelar värden till objektet via konstruktorn. När man anropar konstruktorn anger man de attribut som man vill att det nya objektet ska ha.

Skapa ett objekt i Java - Syntax

Exemplet nedan visar syntaxen för att skapa ett objekt: Först anger man vilken typ objektet är av, alltså klassen som objektet kommer från. Här anger man alltså klassnamnet. Vidare tilldelar man objektet ett namn (objektnamn). Välj ett valfritt namn, praxis är att objektnamn börjar med liten bokstav. Med det reserverade ordet new anger man att man vill skapa ett nytt objekt från klassen. Det är här man anropar konstruktorn, där man inom parantes anger vilka inparametrar som konstruktorn behöver. Detta är alltså attributen som objektet ska få.

Syntaxmall: byt ut platshållarna mot konkreta namn, typer och värden.

Klassnamn objektnamn = new Klassnamn(datatyp1 parameter1, datatyp2 parameter2);

Exempel - Hur skapar man ett objekt?

Detta är en fortsättning på exemplet i föregående avsnitt, där vi ska skapa objekt av klassen hund.

Exempel fortsättning:

I föregående kapitel programmerade vi klassen "Dog". Nu är även information i metoderna inskrivna:

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

    // Definierar instansvariablerna (attributen/tillstånden) 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(){
        System.out.println(this.name + " skäller");
    }

    void eat(){
        System.out.println(this.name + " äter");
    }

    void sleep(){
        System.out.println("zZzZZzzZZz");
    }

}

Vi bestämde i de föregående avsnitten att vi skulle programmera två stycken hundar:

Hund 1:

Namn: Bosse

Ålder: 3

Ras: Terrier

Färg: Brun

Objektet hund i Java. Representation över hur man kan skapa ett objekt i Java

Hund 2:

Namn: Båtsman

Ålder: 5

Ras: Sankt Bernhard

Färg: Svart

Objektet hund i Java. Representation över hur man kan skapa ett objekt i Java

Vi skapar nu dessa två objekt i 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 innehåller värdena ("Bosse", 3, "Terrier", "Brun") och det andra objektet heter dog2 och innehåller värdena ("Båtsman", 5, "Sankt Bernhard", "Svart").

Vi kan nu anropa metoderna i vardera objekt, exempelvis såhär:

dog.bark(); 
dog2.eat();

Utskriften blir då:

Bosse skäller 
Båtsman äter

Vanliga frågor om Skapa ett objekt från en klass

Vad handlar Skapa ett objekt från en klass om?

Skapa objekt i Java med new och en konstruktor. Lär dig skillnaden mellan en referensvariabel och objektet den pekar på.

Hur övar jag på Skapa ett objekt från en klass?

Kör exemplen själv, ändra ett värde i taget och jämför sedan resultatet med förklaringen på sidan.