În Java, clasele și obiectele formează baza programării orientate pe obiecte (OOP). Ele ajută la modelarea entităților din lumea reală și la organizarea codului într-un mod structurat.
- O clasă este un plan folosit pentru a crea obiecte care au proprietăți și comportament comune.
- Un obiect este o instanță a unei clase. Reprezintă o entitate specifică creată din șablonul de clasă.
De exemplu Câinele este o clasă Tommy este un obiect al acelei clase.
Clase și obiecte (Aici câinele este clasa și Bobby este obiectul)Clasa Java
O clasă este un plan care definește datele și comportamentul pentru obiecte. Grupează domenii și metode înrudite într-o singură unitate. Memoria pentru membrii săi este alocată numai atunci când este creat un obiect.
- Acționează ca un șablon pentru a crea obiecte cu structură partajată.
- Nu ocupă memorie pentru câmpuri până la instanțiere.
- Poate conține câmpuri metode constructori imbricate clase și interfețe.
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); } }
Ieșire
10 Alice
Obiecte Java
Un obiect este o instanță a unei clase create pentru a-și accesa datele și operațiunile. Fiecare obiect are propria sa stare.
- Stat : Valori stocate în câmpuri.
- Comportament : Acțiuni definite prin metode.
- Identitate : Distinge un obiect de altul.
Obiectele oglindesc articole din lumea reală, cum ar fi produsul clientului sau cercul. Obiectele non-primitive sunt stocate pe heap în timp ce referințele lor rămân pe stivă.
Obiecte Java (Exemplu de câini)Instanciarea obiectului
Crearea unui obiect este cunoscută ca instanțiere. Toate instanțele unei clase împărtășesc structura și comportamentul în timp ce stochează valori diferite de stare.
Declarație de obiect JavaDeclaraţie:
tuf de câine;
Aceasta declară doar o referință. Obiectul nu este creat și referința este nulă.
Inițializare:
tuffy = new Dog('Tuffy' 'Papillon' 5 'White');
InițializareNoul operator alocă memorie și invocă constructorul.
Exemplu: definirea și utilizarea unei clase
Javapublic 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); } }
Ieșire
Name is: tuffy Breed age and color are: papillon 5 white
Nota: Fiecare clasă are cel puțin un constructor. Dacă nu este definit niciunul, Java oferă un constructor implicit fără argument care apelează constructorul părinte.
Inițializați obiectul utilizând Metoda/Funcția
Javapublic 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(); } }
Ieșire
Software name is: Visual Studio Software price is: 0.0
Modalități de a crea obiecte în Java
Java acceptă patru abordări standard.
1. Utilizarea unui cuvânt cheie nou
Cel mai direct mod de a crea un obiect.
Java// creating object of class Test Test t = new Test();
2. Folosind Reflection
Folosit pentru încărcarea dinamică a clasei, așa cum se vede în cadre precum Spring.
Javaclass 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(); } } }
Ieșire
Student@1dbd16a6
3. Folosind metoda clone().
clone() creează o copie a unui obiect existent. Clasa trebuie să implementeze Cloneable.
Javaclass 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(); } } }
Ieșire
GeeksForGeeks
4. Utilizarea deserializării
Deserializarea este o tehnică de citire a unui obiect din starea salvată într-un fișier. Obiectul este recreat dintr-un flux de octeți stocat.
Consultați Serializare/De-serializare în Java .
Javaimport 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(); } } }
Ieșire
Student: Alice
O singură referință poate indica diferite obiecte în momente diferite.
JavaTest test = new Test(); test = new Test();
În moștenire este obișnuit să se folosească o referință părinte pentru obiectele copil.
JavaAnimal obj = new Dog(); obj = new Cat();
Obiectele fără referință devin eligibile pentru colectarea gunoiului.
Obiecte anonime
Obiectele anonime sunt create fără referință și utilizate imediat pentru operațiuni unice.
- Fără variabilă de referință: nu se poate reutiliza obiectul.
- Creat și utilizat salvează instantaneu memorie pentru sarcini de scurtă durată.
- Frecvent în gestionarea evenimentelor (de exemplu, clicuri pe butoane).
new Dog('Max' 'Labrador' 3 'Black').getName();
Frecvent în gestionarea evenimentelor UI.
Creați un test