logo

Klasser och objekt i Java

I Java är klasser och objekt grundläggande begrepp för objektorienterad programmering (OOPs) som används för att representera verkliga koncept och enheter. Klassen representerar en grupp objekt med liknande egenskaper och beteende. Till exempel djurtypen Hund är en klass medan en viss hund heter Tommy är ett föremål för Hund klass.

I den här artikeln kommer vi att diskutera Java-objekt och -klasser och hur man implementerar dem i vårt program.

Java klasser

En klass i Java är en uppsättning objekt som delar gemensamma egenskaper/beteende och gemensamma egenskaper/attribut. Det är en användardefinierad ritning eller prototyp från vilken objekt skapas. Student är till exempel en klass medan en viss elev som heter Ravi är ett objekt.



Egenskaper för Java-klasser

  1. Klass är inte en verklig enhet. Det är bara en mall eller ritning eller prototyp från vilken objekt skapas.
  2. Klassen upptar inte minnet.
  3. Klass är en grupp av variabler av olika datatyper och en grupp av metoder.
  4. En klass i Java kan innehålla:
    • Datamedlem
    • Metod
    • Konstruktör
    • Kapslad klass
    • Gränssnitt

Klassdeklaration i Java

  access_modifier     class   <  class_name>{ datamedlem; metod; konstruktör; kapslad klass; gränssnitt; }>

Exempel på Java Class

Java




// Java Program for class example> class> Student {> >// data member (also instance variable)> >int> id;> >// data member (also instance variable)> >String name;> >public> static> void> main(String args[])> >{> >// creating an object of> >// Student> >Student s1 =>new> Student();> >System.out.println(s1.id);> >System.out.println(s1.name);> >}> }>

>

>

Java




// Java program to Illustrate Creation of Object> // Using new Instance> // Main class> class> GFG {> >// Declaring and initializing string> >String name =>'GeeksForGeeks'>;> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Try block to check for exceptions> >try> {> >Class cls = Class.forName(>'GFG'>);> >// Creating object of main class> >// using instance method> >GFG obj = (GFG)cls.newInstance();> >// Print and display> >System.out.println(obj.name);> >}> >catch> (ClassNotFoundException e) {> >e.printStackTrace();> >}> >catch> (InstantiationException e) {> >e.printStackTrace();> >}> >catch> (IllegalAccessException e) {> >e.printStackTrace();> >}> >}> }>

>

>

giltiga identifierare i java

Java




// Java program to Illustrate Creation of Object> // Using clone() method> // Main class> // Implementing Cloneable interface> class> GFG>implements> Cloneable {> >// Method 1> >@Override> >protected> Object clone()> >throws> CloneNotSupportedException> >{> >// Super() keyword refers to parent class> >return> super>.clone();> >}> >String name =>'GeeksForGeeks'>;> >// Method 2> >// main driver method> >public> static> void> main(String[] args)> >{> >GFG obj1 =>new> GFG();> >// Try block to check for exceptions> >try> {> >GFG obj2 = (GFG)obj1.clone();> >System.out.println(obj2.name);> >}> >catch> (CloneNotSupportedException e) {> >e.printStackTrace();> >}> >}> }>

>

>

Utgång 1

0 null>

Utgång 2

GeeksForGeeks>

Utgång 3

GeeksForGeeks>

Komponenter i Java-klasser

I allmänhet kan klassdeklarationer inkludera dessa komponenter, i ordning:

  1. Modifierare : En klass kan vara offentlig eller har standardåtkomst (se detta för detaljer).
  2. Klass nyckelord: class nyckelord används för att skapa en klass.
  3. Klassnamn: Namnet ska börja med en initial bokstav (versal enligt konvention).
  4. Superklass (om någon): Namnet på klassens förälder (superklass), om någon, föregås av nyckelordet extends. En klass kan bara utöka (underklass) en förälder.
  5. Gränssnitt (om några): En kommaseparerad lista över gränssnitt implementerade av klassen, om någon, föregås av nyckelordet implements. En klass kan implementera mer än ett gränssnitt.
  6. Kropp: Klasskroppen är omgiven av hängslen, { }.

Konstruktörer används för att initiera nya objekt. Fält är variabler som ger klassens och dess objekts tillstånd, och metoder används för att implementera beteendet hos klassen och dess objekt.
Det finns olika typer av klasser som används i realtidsapplikationer som t.ex kapslade klasser , anonyma klasser , och lambda uttryck .

Java-objekt

Ett objekt i Java är en grundläggande enhet för objektorienterad programmering och representerar verkliga enheter. Objekt är instanserna av en klass som skapas för att använda attributen och metoderna för en klass. Ett typiskt Java-program skapar många objekt, som som du vet interagerar genom att anropa metoder. Ett objekt består av:

  1. stat : Det representeras av attribut för ett objekt. Det återspeglar också egenskaperna hos ett objekt.
  2. Beteende : Det representeras av ett objekts metoder. Det återspeglar också ett objekts svar med andra objekt.
  3. Identitet : Det ger ett unikt namn till ett objekt och gör att ett objekt kan interagera med andra objekt.

Exempel på ett föremål: hund

Java-objekt

Objekt motsvarar saker som finns i den verkliga världen. Till exempel kan ett grafikprogram ha objekt som cirkel, kvadrat och meny. Ett shoppingsystem online kan ha objekt som kundvagn, kund och produkt.

Notera: När vi skapar ett objekt som är en icke primitiv datatyp, allokeras det alltid till högminnet.

Deklarera objekt (kallas även instansiera en klass)

När ett objekt i en klass skapas, sägs klassen vara det instansierat . Alla instanser delar klassens attribut och beteende. Men värdena för dessa attribut, dvs tillståndet, är unika för varje objekt. En enskild klass kan ha valfritt antal instanser.

Exempel:

Java-objektdeklaration

Som vi deklarerar variabler som (typ namn;). Detta meddelar kompilatorn att vi kommer att använda namnet för att referera till data vars typ är typ. Med en primitiv variabel reserverar denna deklaration också rätt mängd minne för variabeln. Så för referensvariabler måste typen strikt vara ett konkret klassnamn. I allmänhet, vi kan inte skapa objekt av en abstrakt klass eller ett gränssnitt.

Dog tuffy;>

Om vi ​​deklarerar en referensvariabel (tuffy) så här, kommer dess värde att vara obestämt (null) tills ett objekt faktiskt skapas och tilldelas det. Att bara deklarera en referensvariabel skapar inte ett objekt.

Initiera ett Java-objekt

Den nya operatorn instansierar en klass genom att allokera minne för ett nytt objekt och returnera en referens till det minnet. Den nya operatören anropar också klasskonstruktorn.

Exempel:

Java




// Class Declaration> public> class> Dog {> >// Instance Variables> >String name;> >String breed;> >int> age;> >String color;> >// Constructor Declaration of Class> >public> Dog(String name, String breed,>int> age,> >String color)> >{> >this>.name = name;> >this>.breed = breed;> >this>.age = age;> >this>.color = color;> >}> >// method 1> >public> String getName() {>return> name; }> >// method 2> >public> String getBreed() {>return> breed; }> >// method 3> >public> int> getAge() {>return> age; }> >// method 4> >public> String getColor() {>return> color; }> >@Override> public> String toString()> >{> >return> (>'Hi my name is '> +>this>.getName()> >+>'. My breed,age and color are '> >+>this>.getBreed() +>','> +>this>.getAge()> >+>','> +>this>.getColor());> >}> >public> static> void> main(String[] args)> >{> >Dog tuffy> >=>new> Dog(>'tuffy'>,>'papillon'>,>5>,>'white'>);> >System.out.println(tuffy.toString());> >}> }>

strängmetoder i java
>

>

Produktion

Hi my name is tuffy. My breed,age and color are papillon,5,white>

Initiera genom att använda metod/funktion:

Java




cobol programmering

public> class> GFG {> >// sw=software> >static> String sw_name;> >static> float> sw_price;> >static> void> set(String n,>float> p)> >{> >sw_name = n;> >sw_price = p;> >}> >static> void> get()> >{> >System.out.println(>'Software name is: '> + sw_name);> >System.out.println(>'Software price is: '> >+ sw_price);> >}> >public> static> void> main(String args[])> >{> >GFG.set(>'Visual studio'>,>0>.0f);> >GFG.get();> >}> }>

>

>

Produktion

Software name is: Visual studio Software price is: 0.0>

Den här klassen innehåller en enda konstruktor. Vi kan känna igen en konstruktor eftersom dess deklaration använder samma namn som klassen och den har ingen returtyp. Java-kompilatorn differentierar konstruktörerna baserat på antalet och typen av argument. Konstruktören i Hund klass tar fyra argument. Följande uttalande ger tuffy, papillon,5 och vit som värden för dessa argument:

Dog tuffy = new Dog('tuffy','papillon',5, 'white');>

Resultatet av att köra detta uttalande kan illustreras som:

Minnesallokering av Java-objekt

Notera: Alla klasser har minst ett konstruktör. Om en klass inte uttryckligen deklarerar någon, tillhandahåller Java-kompilatorn automatiskt en no-argument-konstruktor, även kallad standardkonstruktor. Denna standardkonstruktor anropar klassens överordnade konstruktor utan argument (eftersom den bara innehåller en sats, dvs super();), eller Objekt klasskonstruktor om klassen inte har någon annan förälder (eftersom klassen Object är föräldern till alla klasser antingen direkt eller indirekt).

Sätt att skapa ett objekt i en klass

Det finns fyra sätt att skapa objekt i Java. Strängt taget finns det bara ett sätt (genom att använda en ny nyckelord), och resten använder internt a ny nyckelord.

1. Använda nytt nyckelord

Det är det vanligaste och vanligaste sättet att skapa ett objekt i Java.

Exempel:

// creating object of class Test Test t = new Test();>

2. Använd metoden Class.forName(String className).

Det finns en fördefinierad klass i java.lang-paketet med namnet Klass. Metoden forName(String className) returnerar det Class-objekt som är associerat med klassen med det angivna strängnamnet. Vi måste ge ett fullt kvalificerat namn för en klass. Vid anrop av metoden new Instance() på detta Class-objekt returneras en ny instans av klassen med det angivna strängnamnet.

// creating object of public class Test // consider class Test present in   com.p1   package Test obj = (Test)Class.forName('com.p1.Test').newInstance();>

3. Använder metoden clone().

clone()-metoden finns i klassen Object. Den skapar och returnerar en kopia av objektet.

// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>

4. Deserialisering

Avserialisering är en teknik för att läsa ett objekt från det sparade tillståndet i en fil. Hänvisa till Serialisering/avserialisering i Java

FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>

Skapa flera objekt av endast en typ (en god praxis)

I realtid behöver vi olika objekt i en klass i olika metoder. Att skapa ett antal referenser för att lagra dem är inte en bra praxis och därför deklarerar vi en statisk referensvariabel och använder den närhelst det behövs. I det här fallet är slöseriet med minne mindre. De objekt som inte hänvisas till längre kommer att förstöras av Skräp samlare av Java.

Exempel:

Test test = new Test(); test = new Test();>

I arvssystemet använder vi en överordnad klassreferensvariabel för att lagra ett subklassobjekt. I det här fallet kan vi byta till olika subklassobjekt med samma refererade variabel.

Exempel:

class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); }>

Anonyma objekt i Java

Anonyma objekt är objekt som instansieras men inte lagras i en referensvariabel.

  • De används för omedelbara metodanrop.
  • De kommer att förstöras efter metodanrop.
  • De används ofta i olika bibliotek. Till exempel, i AWT-bibliotek, används de för att utföra någon åtgärd för att fånga en händelse (t.ex. en knapptryckning).
  • I exemplet nedan, när en nyckelknapp (refereras till av btn) trycks, skapar vi helt enkelt ett anonymt objekt av EventHandler-klassen för att bara anropa handlemetoden.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });>

Skillnaden mellan Java Class och Objects

Skillnaderna mellan klass och objekt i Java är följande:

Klass

Objekt

Klass är ritningen av ett objekt. Det används för att skapa objekt. Ett objekt är en instans av klassen.
Inget minne tilldelas när en klass deklareras. Minne tilldelas så snart ett objekt skapas.
En klass är en grupp av liknande objekt. Ett objekt är en verklig enhet som en bok, bil, etc.
Klass är en logisk enhet. Ett föremål är en fysisk enhet.
En klass kan endast deklareras en gång. Objekt kan skapas många gånger enligt krav.
Ett exempel på klass kan vara en bil. Objekt i klassbilen kan vara BMW, Mercedes, Ferrari, etc.