logo

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.

Class_Object_example' title=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.
Java
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.

Objekty v Jave' loading='lazy' title=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.

Deklarovanie objektov v Jave' loading='lazy' title=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');

Triedy-a-Objekty-v-jave-3-768' loading='lazy' title=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).
Java
new Dog('Max' 'Labrador' 3 'Black').getName(); 

Bežné pri spracovávaní udalostí používateľského rozhrania.

Vytvoriť kvíz