Osztályok és objektumok Java nyelven
A Java-ban osztályok és objektumok alkotják az objektum-orientált programozás (OOP) alapját. Segítenek valós entitások modellezésében és strukturált módon rendszerezni a kódot.
- Az osztály egy terv, amelyet közös tulajdonságokkal és viselkedéssel rendelkező objektumok létrehozására használnak.
- Az objektum egy osztály példánya. Egy adott entitást jelöl, amelyet az osztálysablonból hoztak létre.
Például a Dog egy osztály, Tommy ennek az osztálynak az objektuma.
Osztályok és tárgyak (itt a kutya az osztály, és Bobby a tárgy) Java osztály
Az osztály egy terv, amely meghatározza az objektumok adatait és viselkedését. A kapcsolódó területeket és módszereket egyetlen egységbe csoportosítja. A tagok memóriája csak az objektum létrehozásakor kerül lefoglalásra.
- Sablonként működik megosztott szerkezetű objektumok létrehozásához.
- Nem foglalja el a mezők memóriáját a példányosításig.
- Tartalmazhat mezőket metódus konstruktorok beágyazott osztályokat és interfészeket.
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 ); } }
Kimenet
10 Alice
Java objektumok
Az objektum egy osztály példánya, amelyet az adatok és a műveletek eléréséhez hoztak létre. Minden objektumnak megvan a maga állapota.
- Állami : A mezőkben tárolt értékek.
- Viselkedés : Metódusokon keresztül meghatározott cselekvések.
- Identitás : Megkülönbözteti az egyik objektumot a másiktól.
Az objektumok valós tárgyakat tükröznek, mint például az ügyfél terméke vagy köre. A nem primitív objektumok a kupacban tárolódnak, míg hivatkozásaik a veremben maradnak.
Java objektumok (példa kutyákra) Objektum példányosítás
Egy objektum létrehozását példányosításnak nevezik. Egy osztály megosztásának struktúrájának és viselkedésének összes példánya, miközben különböző állapotértékeket tárol.
Java objektum deklaráció Nyilatkozat:
Kutya tuti;
Ez csak egy hivatkozást deklarál. Az objektum nem jön létre, és a hivatkozás nulla.
Inicializálás:
tuffy = new Dog('Puffy' 'Papillon' 5 'Fehér');
Inicializálás Az új operátor lefoglalja a memóriát és meghívja a konstruktort.
Példa: Osztály meghatározása és használata
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 ); } }
Kimenet
Name is: tuffy Breed age and color are: papillon 5 white
Jegyzet: Minden osztálynak van legalább egy konstruktora. Ha nincs megadva, a Java alapértelmezett argumentummentes konstruktort biztosít, amely meghívja a szülő konstruktort.
Inicializálja az objektumot a Method/Function használatával
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 (); } }
Kimenet
Software name is: Visual Studio Software price is: 0.0
Objektumok létrehozásának módjai Java nyelven
A Java négy szabványos megközelítést támogat.
1. Új kulcsszó használata
Az objektum létrehozásának legközvetlenebb módja.
Java // creating object of class Test Test t = new Test ();
2. Reflexió használata
Dinamikus osztálybetöltéshez használják, amint az olyan keretrendszerekben látható, mint a 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 (); } } }
Kimenet
Student@1dbd16a6
3. Clone() metódus használata
A clone() létrehoz egy másolatot egy létező objektumról. Az osztálynak implementálnia kell a Cloneable-t.
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 (); } } }
Kimenet
GeeksForGeeks
4. A deszerializáció használata
A de-szerializálás egy olyan technika, amely egy objektumot a mentett állapotból olvas ki egy fájlban. Az objektum egy tárolt bájtfolyamból jön létre újra.
Lásd Sorozatosítás/de-szerializálás Java nyelven .
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 (); } } }
Kimenet
Student: Alice
Egyetlen hivatkozás különböző időpontokban különböző objektumokra mutathat.
Java Test test = new Test (); test = new Test ();
Az öröklődésben gyakori a szülőhivatkozás használata az utódobjektumokhoz.
Java Animal obj = new Dog (); obj = new Cat ();
A nem hivatkozott objektumok jogosulttá válnak a szemétgyűjtésre.
Névtelen objektumok
Az anonim objektumok hivatkozás nélkül jönnek létre, és azonnal felhasználhatók egyszeri műveletekhez.
- Nincs referenciaváltozó: Az objektum nem használható fel újra.
- A létrehozott és használt azonnal memóriát takarít meg a rövid távú feladatokhoz.
- Gyakori az eseménykezelésben (pl. gombkattintás).
new Dog ( 'Max' 'Labrador' 3 'Black' ). getName ();
Gyakori a felhasználói felület eseménykezelésében.
Kvíz létrehozása