Nyckelord: konstruktor, objekt, klass
Den här artikeln kommer visa hur man använder en konstruktor i Java för att skapa ett objekt från en klass. Vi kommer se att det är med hjälp av en konstruktor som man ger objektet de värden som man önskar att det ska ha.
En konstruktor beskrivs ofta som en speciell metod som används för att instansiera ett objekt från en klass. Det som händer är att när man kallar på en konstruktor från en klass så skapar konstruktorn ett objekt från motsvarande klass. Det är med hjälp av konstruktorn som man anger de inparametrar, 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 egen konstruktor. En konstruktor har alltid samma namn som klassnamnet den tillhör.
Konstruktorn i Java använder man för att skapa ett objekt från en klass.
När man har en klass som man vill skapa ett objekt från så anropar man konstruktorn. Man säger att man instansierar ett objekt från en klass. Det som händer är att när man skapar ett objekt så utför konstruktorn sina operationer först innan resterande delar av klassen exekveras. Konstruktorn är alltså det första som blir anropat när man skapar ett objekt.
Vidare, viktigt att notera är att en konstruktor inte returnerar något. Till skillnad från en metod där vi kan välja om den ska returnera något eller ej, så kommer en konstruktor alltid vara av typen void, alltså att den inte returnerar något värde.
Kortfattat så är en konstruktor:
Man brukar säga att det finns tre typer av konstruktor i Java. Det som skiljer dem åt är antalet inparametrar och ifall det finns ett tillhörande kodblock till konstruktorn eller ej.
Först och främst, det är viktigt att komma ihåg att namnet på konstruktorn måste vara exakt samma som namnet på klassen, och kom ihåg, java är skiftlägeskänsligt. Vidare, viktigt att understryka att en konstruktor inte kan returnera något.
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.. }
Låt oss fortsätta på vårt exempel med klassen Dog. Vi bygger vidare på koden från föregående sida och lägger till konstruktorn för Dog.
//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 } }
Vi tar och tittar lite närmare på själva konstruktorn.
//Definiera konstruktorn Dog(String name, int age, String breed, String color){ this.name = name; this.age = age; this.breed = breed; this.color = color; }
På den översta raden i konstruktorn (rad 11 i editorn) så har vi namnet på konstruktorn, som självklart också är Dog, följt av de inparametrar vi vill att konstruktorn ska ha. Som du ser så är inparametrarn densamma som de klassvariabler som vi definierade när vi skapade klassen (rad 5-8 i editorn).
Dog(String name, int age, String breed, String color){
Det vi säger är alltså; för att skapa objektet hund, krävs fyra 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 inparametrarna 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.
Även om det kan uppfattas som att en konstruktor och en metod är nästan identiska – och som vi nämnde tidigare så beskrivs en konstruktor ibland som en ”speciell metod” – så finns det ett par huvudsakliga skillnader:
Lämna gärna feedback med hjälp av stjärnorna nedan och hjälp oss att fortsätta göra sidan bättre.
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!
När man har en klass som man vill skapa ett objekt från så anropar man konstruktorn, så det är alltså konstruktorn som används för att instansiera ett objekt från en klass. Vi skapar en konstruktor genom att ange klassens namn – eftersom en konstruktor alltid måste ha samma namn som klassen – följt av de inparametrar vi vill att konstruktorn ska ha. Avslutningsvis, det är viktigt att komma ihåg att en konstruktor inte kan returnera något.
Ja det måste den. En konstruktor måste ha samma som klassen den tillhör.
Nyckelordet this hänvisar till det aktuella objektet i en metod eller konstruktor. Vad det innebär är att om man använder this så tilldelar man klassvariablerna de värdena som kommer från konstruktorn.
Det som händer är att om en konstruktor inte är skapad så tillhandahålls en standard-konstruktor av den kompilator vi använder
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!