V Jave sú triedy a objekty základnými konceptmi objektovo orientovaného programovania (OOP), ktoré sa používajú na reprezentáciu konceptov a entít reálneho sveta. Trieda predstavuje skupinu objektov s podobnými vlastnosťami a správaním. Napríklad typ zvieraťa pes je trieda, zatiaľ čo konkrétny pes pomenovaný Tommy je predmetom pes trieda.
V tomto článku budeme diskutovať o objektoch a triedach Java a o tom, ako ich implementovať do nášho programu.
Java triedy
Trieda v Jave je množina objektov, ktoré zdieľajú spoločné charakteristiky/správanie a spoločné vlastnosti/atribúty. Je to užívateľsky definovaný plán alebo prototyp, z ktorého sa vytvárajú objekty. Napríklad študent je trieda, zatiaľ čo konkrétny študent s názvom Ravi je objekt.
Vlastnosti tried Java
- Trieda nie je entita zo skutočného sveta. Je to len šablóna alebo plán alebo prototyp, z ktorého sú vytvorené objekty.
- Trieda nezaberá pamäť.
- Trieda je skupina premenných rôznych typov údajov a skupina metód.
- Trieda v jazyku Java môže obsahovať:
- Dátový člen
- Metóda
- Konštruktér
- Vnorená trieda
- Rozhranie
Vyhlásenie o triede v jazyku Java
access_modifier class < class_name>{ dátový člen; metóda; konštruktér; vnorená trieda; rozhranie; }> Príklad triedy 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();> >}> >}> }> |
>
>
povedal Madhuri
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();> >}> >}> }> |
>
>
Výstup 1
0 null>
Výstup 2
GeeksForGeeks>
Výstup 3
GeeksForGeeks>
Komponenty tried Java
Vo všeobecnosti môžu deklarácie tried obsahovať tieto komponenty v poradí:
- Modifikátory : Trieda môže byť verejná alebo má predvolený prístup (Odkaz toto pre podrobnosti).
- Kľúčové slovo triedy: Kľúčové slovo class sa používa na vytvorenie triedy.
- Názov triedy: Meno by sa malo začínať začiatočným písmenom (veľkým veľkým začiatočným písmenom).
- Supertrieda (ak existuje): Názov rodiča triedy (nadtrieda), ak existuje, pred ktorým je kľúčové slovo extends. Trieda môže rozšíriť (podtriedu) iba o jedného rodiča.
- Rozhrania (ak existujú): Čiarkami oddelený zoznam rozhraní implementovaných triedou, ak nejaké existujú, pred ktorým je kľúčové slovo implements. Trieda môže implementovať viac ako jedno rozhranie.
- Telo: Telo triedy je obklopené zloženými zátvorkami { }.
Konštruktory sa používajú na inicializáciu nových objektov. Polia sú premenné, ktoré poskytujú stav triedy a jej objektov, a metódy sa používajú na implementáciu správania triedy a jej objektov.
Existujú rôzne typy tried, ktoré sa používajú v aplikáciách v reálnom čase ako napr vnorené triedy , anonymné triedy , a lambda výrazy .
Java Objects
Objekt v jazyku Java je základnou jednotkou objektovo orientovaného programovania a predstavuje entity skutočného života. Objekty sú inštancie triedy, ktoré sú vytvorené na používanie atribútov a metód triedy. Typický program Java vytvára veľa objektov, ktoré, ako viete, interagujú vyvolávaním metód. Objekt pozostáva z:
- Štát : Je reprezentovaný atribútmi objektu. Odráža tiež vlastnosti objektu.
- Správanie : Je reprezentovaný metódami objektu. Odráža tiež reakciu objektu s inými objektmi.
- Identita : Poskytuje jedinečný názov objektu a umožňuje interakciu jedného objektu s inými objektmi.
Príklad objektu: pes
Java Objects
Predmety zodpovedajú veciam, ktoré sa nachádzajú v skutočnom svete. Napríklad grafický program môže mať objekty ako kruh, štvorec a menu. Online nákupný systém môže mať objekty ako nákupný košík, zákazník a produkt.
Poznámka: Keď vytvoríme objekt, ktorý nie je primitívnym dátovým typom, je vždy alokovaný v pamäti haldy.
Deklarovanie objektov (nazývané aj vytváranie inštancií triedy)
Keď je vytvorený objekt triedy, hovorí sa, že trieda je inštanciované . Všetky inštancie zdieľajú atribúty a správanie triedy. Ale hodnoty týchto atribútov, t.j. stav, sú jedinečné pre každý objekt. Jedna trieda môže mať ľubovoľný počet inštancií.
Príklad:
Java Object Declaration
Ako deklarujeme premenné ako (názov typu;). Toto upozorní kompilátor, že tento názov použijeme na odkazovanie na údaje, ktorých typ je typ. Pri primitívnej premennej táto deklarácia tiež vyhradí správne množstvo pamäte pre premennú. Takže pre referenčné premenné musí byť typ striktne konkrétny názov triedy. Vo všeobecnosti my nemôže vytvárať objekty abstraktnej triedy alebo rozhrania.
Dog tuffy;>
Ak deklarujeme referenčnú premennú (tuffy) takto, jej hodnota bude neurčitá (null), kým nebude objekt skutočne vytvorený a priradený k nej. Jednoduché deklarovanie referenčnej premennej nevytvorí objekt.
Inicializácia objektu Java
Operátor new vytvorí inštanciu triedy pridelením pamäte pre nový objekt a vrátením odkazu na túto pamäť. Nový operátor tiež vyvolá konštruktor triedy.
java regex $
Príklad:
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());> >}> }> |
>
>Výkon
Hi my name is tuffy. My breed,age and color are papillon,5,white>
Inicializujte pomocou metódy/funkcie:
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();> >}> }> |
>
>Výkon
Software name is: Visual studio Software price is: 0.0>
Táto trieda obsahuje jeden konštruktor. Konštruktor poznáme, pretože jeho deklarácia používa rovnaký názov ako trieda a nemá návratový typ. Kompilátor Java rozlišuje konštruktory na základe počtu a typu argumentov. Konštruktér v pes trieda má štyri argumenty. Nasledujúce vyhlásenie uvádza tuffy, papillon, 5 a white ako hodnoty pre tieto argumenty:
Dog tuffy = new Dog('tuffy','papillon',5, 'white');> Výsledok vykonania tohto príkazu možno znázorniť takto:
Alokácia pamäte objektov Java
Poznámka: Všetky triedy majú min jeden konštruktér. Ak trieda žiadnu explicitne nedeklaruje, kompilátor Java automaticky poskytne konštruktor bez argumentov, nazývaný aj predvolený konštruktor. Tento predvolený konštruktor volá konštruktor bez argumentov rodiča triedy (pretože obsahuje iba jeden príkaz, napr. super();), alebo Objekt konštruktor triedy, ak trieda nemá žiadneho iného rodiča (keďže trieda Object je rodičom všetkých tried buď priamo alebo nepriamo).
Spôsoby, ako vytvoriť objekt triedy
Existujú štyri spôsoby vytvárania objektov v Jave. Presne povedané, existuje len jeden spôsob (pomocou a Nový kľúčové slovo) a zvyšok interne používa a Nový kľúčové slovo.
1. Použitie nového kľúčového slova
Je to najbežnejší a najvšeobecnejší spôsob vytvorenia objektu v Jave.
Príklad:
// creating object of class Test Test t = new Test();>
2. Použitie metódy Class.forName(String className).
V balíku java.lang je preddefinovaná trieda s názvom Class. Metóda forName(String className) vráti objekt Class spojený s triedou s daným názvom reťazca. Pre triedu musíme dať plne kvalifikovaný názov. Pri volaní novej metódy Instance() na tomto objekte Class sa vráti nová inštancia triedy s daným názvom reťazca.
// creating object of public class Test // consider class Test present in com.p1 package Test obj = (Test)Class.forName('com.p1.Test').newInstance();> 3. Použitie metódy clone().
metóda clone() je prítomná v triede Object. Vytvorí a vráti kópiu objektu.
// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>
4. Deserializácia
De-serializácia je technika čítania objektu z uloženého stavu v súbore. Odkazujú na Serializácia/De-serializácia v Jave
FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>
Vytváranie viacerých objektov iba jedným typom (Dobrý postup)
V reálnom čase potrebujeme rôzne objekty triedy v rôznych metódach. Vytváranie množstva referencií na ich ukladanie nie je dobrým zvykom, a preto deklarujeme statickú referenčnú premennú a používame ju vždy, keď je to potrebné. V tomto prípade je plytvanie pamäťou menšie. Objekty, ktoré už nie sú uvedené, budú zničené Smetiar z Javy.
Príklad:
Test test = new Test(); test = new Test();>
V systéme dedičnosti používame referenčnú premennú nadradenej triedy na uloženie objektu podtriedy. V tomto prípade môžeme prepnúť do rôznych objektov podtriedy pomocou rovnakej odkazovanej premennej.
Príklad:
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(); }> Anonymné objekty v Jave
Anonymné objekty sú objekty, ktoré sú konkretizované, ale nie sú uložené v referenčnej premennej.
listnode java
- Používajú sa na okamžité volania metód.
- Po volaní metódy budú zničené.
- Sú široko používané v rôznych knižniciach. Napríklad v knižniciach AWT sa používajú na vykonanie nejakej akcie pri zachytení udalosti (napr. stlačenie klávesu).
- V nižšie uvedenom príklade, keď sa stlačí klávesové tlačidlo (označené btn), jednoducho vytvoríme anonymný objekt triedy EventHandler na volanie metódy handle.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });> Rozdiel medzi triedou Java a objektmi
Rozdiely medzi triedou a objektom v jazyku Java sú nasledovné:
| Trieda | Objekt |
|---|---|
| Trieda je plán objektu. Používa sa na vytváranie objektov. | Objekt je inštanciou triedy. |
| Keď je trieda deklarovaná, nie je pridelená žiadna pamäť. | Pamäť sa pridelí hneď po vytvorení objektu. |
| Trieda je skupina podobných objektov. | Objekt je entita reálneho sveta, ako je kniha, auto atď. |
| Trieda je logická entita. | Objekt je fyzická entita. |
| Trieda môže byť vyhlásená iba raz. | Objekty môžu byť vytvorené mnohokrát podľa požiadaviek. |
| Príkladom triedy môže byť auto. | Predmety auta triedy môžu byť BMW, Mercedes, Ferrari atď. |