Nyckelord: Objekt, Instans, Klass, Objektorienterad programmering, Inkapsling
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.
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:
Man kan beskriva det som att ett objekt i Java har tre egenskaper:
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:
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.
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.
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.
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å.
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();
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.
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 }
Vi ska nu i detta exempel skapa två stycken hundar, alltså två stycken objekt från samma klass:
Hund 1
Hund 2
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?
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
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
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, …);
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!
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.
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.
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!