logo

Razredi in objekti v Javi

V Javi so razredi in objekti osnovni koncepti objektno usmerjenega programiranja (OOP), ki se uporabljajo za predstavitev konceptov in entitet iz resničnega sveta. Razred predstavlja skupino predmetov s podobnimi lastnostmi in obnašanjem. Na primer živalski tip pes je razred, medtem ko je določen pes imenovan Tommy je predmet pes razred.

V tem članku bomo razpravljali o objektih in razredih Java ter o tem, kako jih implementirati v naš program.



Razredi Java

Razred v Javi je nabor predmetov, ki imajo skupne značilnosti/vedenje in skupne lastnosti/atribute. Je uporabniško določen načrt ali prototip, iz katerega so ustvarjeni predmeti. Na primer, študent je razred, medtem ko je določen študent z imenom Ravi objekt.

Lastnosti razredov Java

  1. Razred ni entiteta iz resničnega sveta. Je samo predloga ali načrt ali prototip, iz katerega so ustvarjeni predmeti.
  2. Razred ne zaseda pomnilnika.
  3. Razred je skupina spremenljivk različnih tipov podatkov in skupina metod.
  4. Razred v Javi lahko vsebuje:
    • Član podatkov
    • Metoda
    • Konstruktor
    • Ugnezdeni razred
    • Vmesnik

Deklaracija razreda v Javi

  access_modifier     class   <  class_name>{ podatkovni član; metoda; konstruktor; ugnezdeni razred; vmesnik; }>

Primer razreda Java

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();> >}> >}> }>

>

>

c#

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();> >}> >}> }>

>

>

Izhod 1

0 null>

Rezultat 2

GeeksForGeeks>

Rezultat 3

GeeksForGeeks>

Komponente razredov Java

Na splošno lahko deklaracije razreda vključujejo te komponente v vrstnem redu:

  1. Modifikatorji : Razred je lahko javen ali ima privzeti dostop (Glejte to za podrobnosti).
  2. Ključna beseda razreda: ključna beseda class se uporablja za ustvarjanje razreda.
  3. Ime razreda: Ime se mora začeti z začetno črko (po dogovoru z veliko).
  4. Superrazred (če obstaja): Ime nadrejenega razreda (superrazred), če obstaja, pred katerim je ključna beseda extends. Razred lahko razširi (podrazred) le enega nadrejenega.
  5. Vmesniki (če obstajajo): Seznam vmesnikov, ločenih z vejicami, ki jih izvaja razred, če obstajajo, pred njimi je ključna beseda implements. Razred lahko izvaja več kot en vmesnik.
  6. Telo: Telo razreda je obdano z oklepaji, { }.

Konstruktorji se uporabljajo za inicializacijo novih objektov. Polja so spremenljivke, ki zagotavljajo stanje razreda in njegovih predmetov, metode pa se uporabljajo za izvajanje obnašanja razreda in njegovih objektov.
Obstajajo različne vrste razredov, ki se uporabljajo v aplikacijah v realnem času, kot npr ugnezdeni razredi , anonimni razredi , in lambda izrazi .

Java predmeti

Objekt v Javi je osnovna enota objektno orientiranega programiranja in predstavlja entitete v resničnem življenju. Objekti so primerki razreda, ki so ustvarjeni za uporabo atributov in metod razreda. Tipičen program Java ustvari veliko objektov, ki, kot veste, medsebojno delujejo s klicanjem metod. Objekt je sestavljen iz:

  1. Država : Predstavljajo ga atributi predmeta. Odraža tudi lastnosti predmeta.
  2. Vedenje : Predstavljeno je z metodami objekta. Odraža tudi odziv predmeta z drugimi predmeti.
  3. Identiteta : Predmetu daje edinstveno ime in omogoča interakcijo enega predmeta z drugimi predmeti.

Primer predmeta: pes

Java predmeti

Predmeti ustrezajo stvarem, ki jih najdemo v resničnem svetu. Na primer, grafični program ima lahko predmete, kot so krog, kvadrat in meni. Spletni nakupovalni sistem ima lahko predmete, kot so nakupovalni voziček, stranka in izdelek.

Opomba: Ko ustvarimo objekt, ki ni primitiven podatkovni tip, je vedno dodeljen pomnilniku kopice.

Deklariranje predmetov (imenovano tudi instanciranje razreda)

Ko je predmet razreda ustvarjen, se reče, da je razred primerek . Vsi primerki si delijo atribute in vedenje razreda. Vendar so vrednosti teh atributov, tj. stanja, edinstvene za vsak objekt. Posamezen razred ima lahko poljubno število primerkov.

primer:

Deklaracija objekta Java

Ko deklariramo spremenljivke, kot je (ime tipa;). To obvesti prevajalnik, da bomo ime uporabili za sklicevanje na podatke, katerih tip je type. Pri primitivni spremenljivki ta deklaracija tudi rezervira ustrezno količino pomnilnika za spremenljivko. Torej za referenčne spremenljivke mora biti tip strogo ime konkretnega razreda. Na splošno mi ne morem ustvarjanje objektov abstraktnega razreda ali vmesnika.

Dog tuffy;>

Če tako deklariramo referenčno spremenljivko (tuffy), bo njena vrednost nedoločena (null), dokler objekt dejansko ni ustvarjen in ji dodeljen. Preprosta deklaracija referenčne spremenljivke ne ustvari predmeta.

Inicializacija predmeta Java

Operator new instancira razred tako, da dodeli pomnilnik za nov objekt in vrne sklic na ta pomnilnik. Operator new prikliče tudi konstruktor razreda.

primer:

Java


nadzor shranjenega programa



// 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());> >}> }>

>

>

Izhod

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

Inicializiraj z metodo/funkcijo:

matrike v programiranju c

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();> >}> }>

>

>

Izhod

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

Ta razred vsebuje en sam konstruktor. Konstruktor lahko prepoznamo, ker njegova deklaracija uporablja isto ime kot razred in nima vrnjenega tipa. Prevajalnik Java razlikuje konstruktorje glede na število in vrsto argumentov. Konstruktor v pes razred sprejme štiri argumente. Naslednji stavek ponuja vrednosti tuffy, papillon,5 in white za te argumente:

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

Rezultat izvajanja tega stavka je mogoče ponazoriti kot:

Dodeljevanje pomnilnika objektov Java

Opomba: Vsi razredi imajo vsaj eno konstruktor. Če razred ne deklarira nobenega, prevajalnik Java samodejno zagotovi konstruktor brez argumentov, imenovan tudi privzeti konstruktor. Ta privzeti konstruktor pokliče konstruktor brez argumentov nadrejenega razreda (ker vsebuje samo en stavek, npr. super();) ali Objekt konstruktor razreda, če razred nima drugega nadrejenega (ker je razred Object neposredno ali posredno nadrejeni vsem razredom).

Načini ustvarjanja predmeta razreda

Obstajajo štirje načini za ustvarjanje objektov v Javi. Strogo gledano, obstaja samo en način (z uporabo a novo ključna beseda), ostali pa interno uporabljajo a novo ključna beseda.

1. Uporaba nove ključne besede

Je najpogostejši in splošen način ustvarjanja predmeta v Javi.

primer:

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

2. Uporaba metode Class.forName(String className).

V paketu java.lang je vnaprej določen razred z imenom Razred. Metoda forName(String className) vrne objekt Class, povezan z razredom z danim imenom niza. Za razred moramo dati popolnoma kvalificirano ime. Ob klicu nove metode Instance() na tem objektu razreda vrne nov primerek razreda z danim imenom niza.

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

3. Uporaba metode clone().

metoda clone() je prisotna v razredu Object. Ustvari in vrne kopijo predmeta.

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

4. Deserializacija

Deserializacija je tehnika branja predmeta iz shranjenega stanja v datoteki. Nanašati se na Serializacija/de-serializacija v Javi

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

Ustvarjanje več predmetov samo z eno vrsto (dobra praksa)

V realnem času potrebujemo različne objekte razreda v različnih metodah. Ustvarjanje številnih referenc za njihovo shranjevanje ni dobra praksa, zato deklariramo statično referenčno spremenljivko in jo uporabimo, kadar koli je to potrebno. V tem primeru je izguba pomnilnika manjša. Predmeti, ki niso več navedeni, bodo uničeni z Zbiralec smeti Jave.

primer:

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

V sistemu dedovanja uporabljamo referenčno spremenljivko nadrejenega razreda za shranjevanje predmeta podrazreda. V tem primeru lahko preklopimo v različne objekte podrazreda z uporabo iste referenčne spremenljivke.

primer:

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(); }>

Anonimni objekti v Javi

Anonimni objekti so objekti, ki so instancirani, vendar niso shranjeni v referenčni spremenljivki.

  • Uporabljajo se za takojšnje klice metod.
  • Po klicu metode bodo uničeni.
  • Pogosto se uporabljajo v različnih knjižnicah. Na primer, v knjižnicah AWT se uporabljajo za izvedbo nekaterih dejanj pri zajemanju dogodka (npr. pritisk tipke).
  • V spodnjem primeru, ko pritisnemo tipko (na katero se sklicuje btn), preprosto ustvarimo anonimni objekt razreda EventHandler za samo klic metode ročaja.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });>

Razlika med razredom Java in objekti

Razlike med razredom in objektom v Javi so naslednje:

Razred

Objekt

Razred je načrt predmeta. Uporablja se za ustvarjanje predmetov. Objekt je primerek razreda.
Ko je razred deklariran, se pomnilnik ne dodeli. Pomnilnik se dodeli takoj, ko je objekt ustvarjen.
Razred je skupina podobnih predmetov. Predmet je entiteta iz resničnega sveta, kot je knjiga, avto itd.
Razred je logična entiteta. Predmet je fizična entiteta.
Razred je mogoče deklarirati samo enkrat. Predmete je mogoče ustvariti večkrat glede na zahtevo.
Primer razreda je lahko avto. Predmeti razreda avtomobilov so lahko BMW, Mercedes, Ferrari itd.