I Java er klasser og objekter grunnleggende konsepter for objektorientert programmering (OOPs) som brukes til å representere virkelige konsepter og enheter. Klassen representerer en gruppe objekter med lignende egenskaper og oppførsel. For eksempel dyretypen Hund er en klasse mens en bestemt hund heter Tommy er et objekt av Hund klasse.
I denne artikkelen vil vi diskutere Java-objekter og -klasser og hvordan du implementerer dem i programmet vårt.
Java-klasser
En klasse i Java er et sett med objekter som deler felles egenskaper/oppførsel og vanlige egenskaper/attributter. Det er en brukerdefinert blåkopi eller prototype som objekter lages fra. For eksempel er Student en klasse mens en bestemt student ved navn Ravi er et objekt.
Egenskaper til Java-klasser
- Klasse er ikke en virkelighet. Det er bare en mal eller blåkopi eller prototype som objekter lages fra.
- Klassen opptar ikke minnet.
- Klasse er en gruppe variabler av forskjellige datatyper og en gruppe metoder.
- En klasse i Java kan inneholde:
- Datamedlem
- Metode
- Konstruktør
- Nestet klasse
- Grensesnitt
Klasseerklæring i Java
access_modifier class < class_name>{ datamedlem; metode; konstruktør; nestet klasse; grensesnitt; }> Eksempel 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();> >}> >}> }> |
>
>
hvordan konvertere streng til char
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();> >}> >}> }> |
>
>
Utgang 1
0 null>
Utgang 2
GeeksForGeeks>
Utgang 3
GeeksForGeeks>
Komponenter av Java-klasser
Generelt kan klasseerklæringer inkludere disse komponentene, i rekkefølge:
- Modifikatorer : En klasse kan være offentlig eller har standardtilgang (Se dette for detaljer).
- Klassesøkeord: class nøkkelord brukes til å lage en klasse.
- Klassenavn: Navnet skal begynne med en forbokstav (store bokstaver etter konvensjon).
- Superklasse (hvis noen): Navnet på klassens overordnede (superklasse), hvis noen, etter nøkkelordet utvides. En klasse kan bare utvide (underklasse) én forelder.
- Grensesnitt (hvis noen): En kommadelt liste over grensesnitt implementert av klassen, hvis noen, innledet med nøkkelordet implements. En klasse kan implementere mer enn ett grensesnitt.
- Kropp: Klassekroppen er omgitt av klammeparenteser, { }.
Konstruktører brukes til å initialisere nye objekter. Felt er variabler som gir tilstanden til klassen og dens objekter, og metoder brukes for å implementere atferden til klassen og dens objekter.
Det finnes ulike typer klasser som brukes i sanntidsapplikasjoner som f.eks nestede klasser , anonyme klasser , og lambda-uttrykk .
Java-objekter
Et objekt i Java er en grunnleggende enhet for objektorientert programmering og representerer virkelige enheter. Objekter er forekomstene av en klasse som er opprettet for å bruke attributtene og metodene til en klasse. Et typisk Java-program lager mange objekter, som som du vet samhandler ved å påkalle metoder. Et objekt består av:
- Stat : Det er representert av attributter til et objekt. Det gjenspeiler også egenskapene til et objekt.
- Oppførsel : Det er representert ved metodene til et objekt. Det gjenspeiler også responsen til et objekt med andre objekter.
- Identitet : Det gir et unikt navn til et objekt og lar ett objekt samhandle med andre objekter.
Eksempel på en gjenstand: hund
Java-objekter
Objekter tilsvarer ting som finnes i den virkelige verden. For eksempel kan et grafikkprogram ha objekter som sirkel, firkant og meny. Et nettbasert shoppingsystem kan ha objekter som handlekurv, kunde og produkt.
Merk: Når vi lager et objekt som er en ikke-primitiv datatype, blir det alltid allokert til haugminnet.
Erklære objekter (også kalt å instansiere en klasse)
Når et objekt av en klasse er opprettet, sies klassen å være instansiert . Alle forekomstene deler attributtene og oppførselen til klassen. Men verdiene til disse attributtene, dvs. tilstanden, er unike for hvert objekt. En enkelt klasse kan ha et hvilket som helst antall forekomster.
Eksempel:
alfabetet som tall
Java Object Declaration
Som vi erklærer variabler som (type navn;). Dette varsler kompilatoren om at vi vil bruke navnet for å referere til data hvis type er type. Med en primitiv variabel reserverer denne deklarasjonen også riktig mengde minne for variabelen. Så for referansevariabler må typen strengt tatt være et konkret klassenavn. Generelt sett, vi kan ikke lage objekter av en abstrakt klasse eller et grensesnitt.
Dog tuffy;>
Hvis vi erklærer en referansevariabel(tuffy) som dette, vil verdien være ubestemt(null) inntil et objekt faktisk er opprettet og tilordnet det. Bare å deklarere en referansevariabel oppretter ikke et objekt.
Initialisere et Java-objekt
Den nye operatøren instansierer en klasse ved å allokere minne for et nytt objekt og returnere en referanse til det minnet. Den nye operatøren påkaller også klassekonstruktøren.
Eksempel:
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());> >}> }> |
>
>Produksjon
Hi my name is tuffy. My breed,age and color are papillon,5,white>
Initialiser ved å bruke metode/funksjon:
Java
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();> >}> }> |
>
>Produksjon
Software name is: Visual studio Software price is: 0.0>
Denne klassen inneholder en enkelt konstruktør. Vi kan gjenkjenne en konstruktør fordi dens erklæring bruker samme navn som klassen og den har ingen returtype. Java-kompilatoren skiller konstruktørene basert på antallet og typen argumenter. Konstruktøren i Hund klasse tar fire argumenter. Følgende utsagn gir tuffy, papillon, 5 og hvit som verdier for disse argumentene:
Dog tuffy = new Dog('tuffy','papillon',5, 'white');> Resultatet av å utføre denne setningen kan illustreres som:
Minnetildeling av Java-objekter
Merk: Alle klasser har minst en konstruktør. Hvis en klasse ikke eksplisitt erklærer noen, gir Java-kompilatoren automatisk en no-argument-konstruktør, også kalt standardkonstruktøren. Denne standardkonstruktøren kaller klasseforelderens no-argument-konstruktør (da den inneholder bare én setning, dvs. super();), eller Gjenstand klassekonstruktør hvis klassen ikke har noen annen forelder (da Object-klassen er overordnet til alle klasser enten direkte eller indirekte).
Måter å lage et objekt i en klasse
Det er fire måter å lage objekter på i Java. Strengt tatt er det bare én måte (ved å bruke en ny nøkkelord), og resten internt bruker en ny søkeord.
1. Bruke nytt nøkkelord
Det er den vanligste og generelle måten å lage et objekt på i Java.
Eksempel:
// creating object of class Test Test t = new Test();>
2. Bruke metoden Class.forName(String className).
Det er en forhåndsdefinert klasse i java.lang-pakken med navnet Class. Metoden forName(String className) returnerer Class-objektet knyttet til klassen med det gitte strengnavnet. Vi må gi et fullt kvalifisert navn for en klasse. Ved å kalle den nye Instance()-metoden på dette Class-objektet returnerer en ny forekomst av klassen med det gitte strengnavnet.
// creating object of public class Test // consider class Test present in com.p1 package Test obj = (Test)Class.forName('com.p1.Test').newInstance();> 3. Bruke klone()-metoden
clone()-metoden er til stede i Object-klassen. Den oppretter og returnerer en kopi av objektet.
// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>
4. Deserialisering
De-serialisering er en teknikk for å lese et objekt fra den lagrede tilstanden i en fil. Referere til Serialisering/de-serialisering i Java
FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>
Lage flere objekter kun etter én type (en god praksis)
I sanntid trenger vi forskjellige objekter i en klasse i forskjellige metoder. Å lage et antall referanser for å lagre dem er ikke en god praksis, og derfor erklærer vi en statisk referansevariabel og bruker den når det er nødvendig. I dette tilfellet er sløsingen med minne mindre. Objektene som ikke er referert lenger vil bli ødelagt av Søppelmann av Java.
java sammenligne strenger
Eksempel:
Test test = new Test(); test = new Test();>
I arvesystemet bruker vi en overordnet klassereferansevariabel for å lagre et underklasseobjekt. I dette tilfellet kan vi bytte til forskjellige underklasseobjekter ved å bruke den samme refererte variabelen.
Eksempel:
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(); }> Anonyme objekter i Java
Anonyme objekter er objekter som instansieres, men som ikke er lagret i en referansevariabel.
- De brukes til umiddelbare metodeanrop.
- De vil bli ødelagt etter metodekalling.
- De er mye brukt i forskjellige biblioteker. For eksempel, i AWT-biblioteker, brukes de til å utføre en handling for å fange en hendelse (f.eks. et tastetrykk).
- I eksemplet nedenfor, når en nøkkelknapp (referert til av btn) trykkes, lager vi ganske enkelt et anonymt objekt av EventHandler-klassen for bare å kalle handlemetoden.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });> Forskjellen mellom Java Class og Objects
Forskjellene mellom klasse og objekt i Java er som følger:
| Klasse | Gjenstand |
|---|---|
| Klasse er blåkopi av et objekt. Den brukes til å lage objekter. | Et objekt er en forekomst av klassen. |
| Ingen minne tildeles når en klasse er deklarert. | Minne tildeles så snart et objekt er opprettet. |
| En klasse er en gruppe med lignende objekter. | Et objekt er en virkelighet som en bok, bil, etc. |
| Klasse er en logisk enhet. | Et objekt er en fysisk enhet. |
| En klasse kan kun deklareres én gang. | Objekter kan lages mange ganger etter behov. |
| Et eksempel på klasse kan være en bil. | Objekter i klassebilen kan være BMW, Mercedes, Ferrari, etc. |