Triedy a objekty v Jave
V jazyku Java tvoria triedy a objekty základ objektovo-orientovaného programovania (OOP). Pomáhajú modelovať entity reálneho sveta a organizovať kód štruktúrovaným spôsobom.
- Trieda je plán používaný na vytváranie objektov, ktoré zdieľajú spoločné vlastnosti a správanie.
- Objekt je inštanciou triedy. Predstavuje konkrétnu entitu vytvorenú zo šablóny triedy.
Napríklad Pes je trieda Tommy je objekt tejto triedy.
Triedy a predmety (tu je pes trieda a Bobby je objekt) Trieda Java
Trieda je plán, ktorý definuje údaje a správanie objektov. Združuje súvisiace oblasti a metódy do jedného celku. Pamäť pre jeho členov sa pridelí iba pri vytvorení objektu.
- Funguje ako šablóna na vytváranie objektov so zdieľanou štruktúrou.
- Nezaberá pamäť pre polia až do vytvorenia inštancie.
- Môže obsahovať konštruktory metód polí vnorené triedy a rozhrania.
class Student { int id ; String n ; public Student ( int id String n ) { this . id = id ; this . n = n ; } } public class Main { public static void main ( String [] args ) { Student s1 = new Student ( 10 'Alice' ); System . out . println ( s1 . id ); System . out . println ( s1 . n ); } }
Výstup
10 Alice
Java Objects
Objekt je inštanciou triedy vytvorenej na prístup k jej údajom a operáciám. Každý objekt má svoj vlastný stav.
- štátu : Hodnoty uložené v poliach.
- Správanie : Akcie definované prostredníctvom metód.
- Identita : Rozlišuje jeden objekt od druhého.
Objekty odzrkadľujú položky skutočného sveta, ako napríklad zákaznícky produkt alebo kruh. Neprimitívne objekty sú uložené na halde, zatiaľ čo ich referencie zostávajú v zásobníku.
Java Objects (príklad psov) Objektová inštancia
Vytvorenie objektu je známe ako inštancia. Všetky inštancie triedy zdieľajú štruktúru a správanie pri ukladaní rôznych hodnôt stavu.
Java Object Declaration Vyhlásenie:
Pes tuffy;
Toto deklaruje iba referenciu. Objekt nie je vytvorený a odkaz má hodnotu null.
Inicializácia:
tuffy = new Dog('Tuffy' 'Papillon' 5 'White');
Inicializácia Operátor new alokuje pamäť a vyvolá konštruktor.
Príklad: Definovanie a používanie triedy
Java public class Dog { String name ; String breed ; int age ; String color ; public Dog ( String name String breed int age String color ) { this . name = name ; this . breed = breed ; this . age = age ; this . color = color ; } public String getName () { return name ; } public String getBreed () { return breed ; } public int getAge () { return age ; } public String getColor () { return color ; } @Override public String toString () { return 'Name is: ' + name + 'nBreed age and color are: ' + breed + ' ' + age + ' ' + color ; } public static void main ( String [] args ) { Dog tuffy = new Dog ( 'tuffy' 'papillon' 5 'white' ); System . out . println ( tuffy ); } }
Výstup
Name is: tuffy Breed age and color are: papillon 5 white
Poznámka: Každá trieda má aspoň jeden konštruktor. Ak nie je definovaný žiadny, Java poskytuje predvolený konštruktor bez argumentov, ktorý volá nadradený konštruktor.
Inicializujte objekt pomocou metódy/funkcie
Java public class Geeks { static String name ; static float price ; static void set ( String n float p ) { name = n ; price = p ; } static void get () { System . out . println ( 'Software name is: ' + name ); System . out . println ( 'Software price is: ' + price ); } public static void main ( String [] args ) { Geeks . set ( 'Visual Studio' 0.0f ); Geeks . get (); } }
Výstup
Software name is: Visual Studio Software price is: 0.0
Spôsoby, ako vytvoriť objekt v jazyku Java
Java podporuje štyri štandardné prístupy.
1. Použitie nového kľúčového slova
Najpriamejší spôsob vytvorenia objektu.
Java // creating object of class Test Test t = new Test ();
2. Použitie odrazu
Používa sa na dynamické načítanie tried, ako je vidieť v rámcoch ako Spring.
Java class Student { public Student () {} } public class Main { public static void main ( String [] args ) { try { Class > c = Class . forName ( 'Student' ); Student s = ( Student ) c . getDeclaredConstructor (). newInstance (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
Výstup
Student@1dbd16a6
3. Použitie metódy clone().
clone() vytvorí kópiu existujúceho objektu. Trieda musí implementovať Cloneable.
Java class Geeks implements Cloneable { String name = 'GeeksForGeeks' ; @Override protected Object clone () throws CloneNotSupportedException { return super . clone (); } public static void main ( String [] args ) { try { Geeks g1 = new Geeks (); Geeks g2 = ( Geeks ) g1 . clone (); System . out . println ( g2 . name ); } catch ( Exception e ) { e . printStackTrace (); } } }
Výstup
GeeksForGeeks
4. Použitie deserializácie
De-serializácia je technika čítania objektu z uloženého stavu v súbore. Objekt je znovu vytvorený z uloženého toku bajtov.
Pozri Serializácia/De-serializácia v Jave .
Java import java.io.* ; class Student implements Serializable { private String name ; public Student ( String name ) { this . name = name ; } public String toString () { return 'Student: ' + name ; } } public class Main { public static void main ( String [] args ) { try ( ObjectOutputStream out = new ObjectOutputStream ( new FileOutputStream ( 'student.ser' ))) { out . writeObject ( new Student ( 'Alice' )); } catch ( IOException e ) { e . printStackTrace (); } try ( ObjectInputStream in = new ObjectInputStream ( new FileInputStream ( 'student.ser' ))) { Student s = ( Student ) in . readObject (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
Výstup
Student: Alice
Jeden odkaz môže ukazovať na rôzne objekty v rôznych časoch.
Java Test test = new Test (); test = new Test ();
Pri dedení je bežné používať rodičovský odkaz pre podradené objekty.
Java Animal obj = new Dog (); obj = new Cat ();
Nereferencované objekty sa stanú vhodnými na zber odpadu.
Anonymné objekty
Anonymné objekty sa vytvárajú bez odkazu a okamžite sa používajú na jednorazové operácie.
- Žiadna referenčná premenná: Objekt nemožno znova použiť.
- Vytvorený a použitý okamžite šetrí pamäť pre krátkodobé úlohy.
- Bežné pri spracovaní udalostí (napr. kliknutia na tlačidlo).
new Dog ( 'Max' 'Labrador' 3 'Black' ). getName ();
Bežné pri spracovávaní udalostí používateľského rozhrania.
Vytvoriť kvíz