logo

Klasės ir objektai Java

„Java“ kalboje klasės ir objektai yra pagrindinės objektinio programavimo (OOP) sąvokos, naudojamos realaus pasaulio sąvokoms ir subjektams pavaizduoti. Klasė reiškia objektų, turinčių panašias savybes ir elgesį, grupę. Pavyzdžiui, gyvūno tipas Šuo yra klasė, o konkretus šuo pavadintas Tommy yra objektas Šuo klasė.

Šiame straipsnyje aptarsime Java objektus ir klases bei kaip juos įdiegti mūsų programoje.



Java klasės

„Java“ klasė yra objektų rinkinys, turintis bendrų savybių / elgsenos ir bendrų savybių / atributų. Tai vartotojo apibrėžtas projektas arba prototipas, iš kurio kuriami objektai. Pavyzdžiui, Mokinys yra klasė, o konkretus mokinys, vardu Ravi, yra objektas.

„Java“ klasių savybės

  1. Klasė nėra realaus pasaulio subjektas. Tai tik šablonas, planas arba prototipas, iš kurių kuriami objektai.
  2. Klasė neužima atminties.
  3. Klasė yra skirtingų duomenų tipų kintamųjų ir metodų grupė.
  4. „Java“ klasėje gali būti:
    • Duomenų narys
    • Metodas
    • Konstruktorius
    • Įdėta klasė
    • Sąsaja

Klasės deklaracija Java

  access_modifier     class   <  class_name>{ duomenų narys; metodas; konstruktorius; įdėta klasė; sąsaja; }>

Java klasės pavyzdys

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

>

>

niūri kalba

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

>

>

1 išėjimas

0 null>

2 išėjimas

GeeksForGeeks>

3 išėjimas

GeeksForGeeks>

„Java“ klasių komponentai

Paprastai klasių deklaracijos gali apimti šiuos komponentus tokia tvarka:

  1. Modifikatoriai : klasė gali būti vieša arba turėti numatytąją prieigą (žr tai Norėdami gauti daugiau informacijos).
  2. Klasės raktinis žodis: Klasės raktinis žodis naudojamas klasei sukurti.
  3. Klasės pavadinimas: Pavadinimas turi prasidėti pradine raide (pagal susitarimą didžiosiomis raidėmis).
  4. Superklasė (jei yra): Klasės pirminės klasės pavadinimas (superklasė), jei toks yra, prieš raktinį žodį Extens. Klasė gali išplėsti (poklasį) tik vieną iš tėvų.
  5. Sąsajos (jei yra): Kableliais atskirtas klasės įdiegtų sąsajų sąrašas, jei yra, prieš kurį rašomas raktinis žodis implements. Klasė gali įdiegti daugiau nei vieną sąsają.
  6. Kūnas: Klasės korpusas yra apsuptas petnešomis, { }.

Konstruktoriai naudojami naujiems objektams inicijuoti. Laukai yra kintamieji, nurodantys klasės ir jos objektų būseną, o metodai naudojami klasės ir jos objektų elgsenai įgyvendinti.
Yra įvairių tipų klasės, kurios naudojamos realiojo laiko programose, pvz įdėtos klasės , anoniminės klasės , ir lambda išraiškos .

Java objektai

„Java“ objektas yra pagrindinis objektinio programavimo vienetas ir atspindi realaus gyvenimo objektus. Objektai yra klasės egzemplioriai, sukurti naudoti klasės atributus ir metodus. Įprasta Java programa sukuria daugybę objektų, kurie, kaip žinote, sąveikauja pasitelkdami metodus. Objektas susideda iš:

  1. valstybė : jį pavaizduoja objekto atributai. Tai taip pat atspindi objekto savybes.
  2. Elgesys : Jis vaizduojamas objekto metodais. Tai taip pat atspindi objekto reakciją į kitus objektus.
  3. Tapatybė : suteikia unikalų pavadinimą objektui ir leidžia vienam objektui sąveikauti su kitais objektais.

Objekto pavyzdys: šuo

Java objektai

Objektai atitinka daiktus, randamus realiame pasaulyje. Pavyzdžiui, grafikos programa gali turėti tokius objektus kaip apskritimas, kvadratas ir meniu. Internetinėje apsipirkimo sistemoje gali būti tokių objektų kaip pirkinių krepšelis, klientas ir produktas.

Pastaba: Kai kuriame objektą, kuris yra neprimityvaus tipo duomenų, jis visada priskiriamas krūvos atmintyje.

Objektų deklaravimas (taip pat vadinamas klasės egzistavimu)

Kai sukuriamas klasės objektas, sakoma, kad klasė yra instantiuota . Visi egzemplioriai dalijasi klasės atributais ir elgsena. Bet tų atributų reikšmės, ty būsena, kiekvienam objektui yra unikalios. Viena klasė gali turėti bet kokį egzempliorių skaičių.

Pavyzdys:

Java objekto deklaracija

Kaip deklaruojame tokius kintamuosius kaip (tipo pavadinimas;). Tai praneša kompiliatoriui, kad naudosime pavadinimą norėdami nurodyti duomenis, kurių tipas yra tipas. Naudojant primityvų kintamąjį, ši deklaracija taip pat rezervuoja reikiamą atminties kiekį kintamajam. Taigi nuorodos kintamiesiems tipas turi būti griežtai konkretus klasės pavadinimas. Apskritai mes negali sukurti abstrakčios klasės ar sąsajos objektus.

Dog tuffy;>

Jei taip paskelbsime atskaitos kintamąjį (tuffy), jo reikšmė bus neapibrėžta (null), kol objektas bus iš tikrųjų sukurtas ir jam priskirtas. Paprasčiausiai deklaravus nuorodos kintamąjį objektas nesukuriamas.

„Java“ objekto inicijavimas

Naujasis operatorius sukuria klasę, skirdamas atmintį naujam objektui ir grąžindamas nuorodą į tą atmintį. Naujasis operatorius taip pat iškviečia klasės konstruktorių.

Pavyzdys:

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

viršutinis indeksas iliustratoriuje
>

>

Išvestis

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

Inicijuoti naudojant metodą / funkciją:

Java




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

>

>

Išvestis

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

Šioje klasėje yra vienas konstruktorius. Konstruktorių galime atpažinti, nes jo deklaracijoje naudojamas toks pat pavadinimas kaip ir klasėje ir jis neturi grąžinimo tipo. „Java“ kompiliatorius išskiria konstruktorius pagal argumentų skaičių ir tipą. Konstruktorius į Šuo klasė turi keturis argumentus. Šiame teiginyje kaip šių argumentų reikšmės pateikiamos tuffy, papillon,5 ir white:

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

Šio teiginio vykdymo rezultatą galima iliustruoti taip:

Java objektų atminties paskirstymas

Pastaba: Visos klasės turi bent vienas konstruktorius. Jei klasė nėra aiškiai deklaruojama, Java kompiliatorius automatiškai pateikia beargumentinį konstruktorių, dar vadinamą numatytuoju konstruktoriumi. Šis numatytasis konstruktorius iškviečia klasės pirminės klasės konstruktorių be argumentų (nes jame yra tik vienas sakinys, ty super();) arba Objektas klasės konstruktorius, jei klasė neturi kito pirminio (kadangi Object klasė yra visų klasių pirminė tiesiogiai arba netiesiogiai).

Būdai sukurti klasės objektą

Yra keturi būdai, kaip kurti objektus Java. Griežtai kalbant, yra tik vienas būdas (naudojant a naujas raktinis žodis), o likusieji viduje naudoja a naujas raktažodį.

1. Naujo raktinio žodžio naudojimas

Tai yra labiausiai paplitęs ir bendriausias būdas sukurti objektą Java.

Pavyzdys:

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

2. Naudojant Class.forName(String className) metodą

Java.lang pakete yra iš anksto nustatyta klasė pavadinimu Class. Metodas forName(String className) grąžina Class objektą, susietą su klase nurodytu eilutės pavadinimu. Turime duoti visiškai kvalifikuotą klasės pavadinimą. Iškvietus naują Instance() metodą šiame Class objekte, pateikiamas naujas klasės egzempliorius su nurodytu eilutės pavadinimu.

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

3. Clono() metodo naudojimas

Clone() metodas yra objektų klasėje. Jis sukuria ir grąžina objekto kopiją.

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

4. Deserializacija

Išserializavimas yra būdas nuskaityti objektą iš išsaugotos būsenos faile. Atsižvelgti į Serializavimas / de-serializavimas Java

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

Kelių objektų kūrimas tik pagal vieną tipą (gera praktika)

Realiuoju laiku mums reikia skirtingų klasės objektų skirtingais metodais. Sukurti daugybę nuorodų joms saugoti nėra gera praktika, todėl deklaruojame statinį nuorodos kintamąjį ir naudojame jį, kai reikia. Tokiu atveju atminties eikvojama mažiau. Objektai, į kuriuos nebėra nuoroda, bus sunaikinti Šiukšlių surinkėjas Java.

Pavyzdys:

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

Paveldėjimo sistemoje naudojame pagrindinės klasės nuorodos kintamąjį, kad saugotume poklasio objektą. Tokiu atveju galime pereiti į skirtingus poklasio objektus naudodami tą patį nurodytą kintamąjį.

Pavyzdys:

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

Anoniminiai objektai Java

Anoniminiai objektai yra objektai, kurie yra sukurti, bet nėra saugomi nuorodos kintamajame.

  • Jie naudojami skubiems metodų iškvietimams.
  • Jie bus sunaikinti po metodo iškvietimo.
  • Jie plačiai naudojami įvairiose bibliotekose. Pavyzdžiui, AWT bibliotekose jos naudojamos tam tikriems veiksmams fiksuojant įvykį atlikti (pvz., klavišo paspaudimas).
  • Toliau pateiktame pavyzdyje, kai paspaudžiamas klavišo mygtukas (nurodytas btn), mes tiesiog sukuriame anoniminį EventHandler klasės objektą, skirtą tiesiog iškviesti rankenos metodą.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });>

Skirtumas tarp „Java“ klasės ir objektų

„Java“ klasės ir objekto skirtumai yra tokie:

Klasė

Objektas

Klasė yra objekto planas. Jis naudojamas objektams kurti. Objektas yra klasės egzempliorius.
Kai deklaruojama klasė, atmintis neskiriama. Atmintis paskirstoma iš karto, kai tik sukuriamas objektas.
Klasė yra panašių objektų grupė. Objektas yra realaus pasaulio subjektas, pvz., knyga, automobilis ir kt.
Klasė yra loginis vienetas. Objektas yra fizinis subjektas.
Klasė gali būti deklaruojama tik vieną kartą. Objektai gali būti sukurti daug kartų pagal poreikį.
Klasės pavyzdys gali būti automobilis. Klasės automobilio objektai gali būti BMW, Mercedes, Ferrari ir kt.