logo

Klasy i obiekty w Javie

W Javie klasy i obiekty stanowią podstawę programowania obiektowego (OOP). Pomagają modelować byty ze świata rzeczywistego i organizować kod w uporządkowany sposób.

  • Klasa to plan używany do tworzenia obiektów o wspólnych właściwościach i zachowaniu.
  • Obiekt jest instancją klasy. Reprezentuje konkretną jednostkę utworzoną na podstawie szablonu klasy.

Na przykład Pies jest klasą. Tommy jest obiektem tej klasy.

Class_Object_przykład' title=Klasy i obiekty (tutaj pies jest klasą, a Bobby jest obiektem)

Klasa Java

Klasa to plan definiujący dane i zachowanie obiektów. Grupuje powiązane pola i metody w jedną jednostkę. Pamięć dla jej członków jest przydzielana tylko podczas tworzenia obiektu.



  • Działa jako szablon do tworzenia obiektów o wspólnej strukturze.
  • Nie zajmuje pamięci dla pól do momentu utworzenia instancji.
  • Może zawierać pola, metody, konstruktory, zagnieżdżone klasy i interfejsy.
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);  } } 

Wyjście
10 Alice 

Obiekty Java

Obiekt to instancja klasy utworzona w celu uzyskania dostępu do jej danych i operacji. Każdy obiekt utrzymuje swój własny stan.

  • Państwo : Wartości przechowywane w polach.
  • Zachowanie : Akcje definiowane za pomocą metod.
  • Tożsamość : Odróżnia jeden obiekt od drugiego.

Obiekty odzwierciedlają przedmioty ze świata rzeczywistego, takie jak produkt klienta lub krąg. Obiekty nieprymitywne są przechowywane na stercie, podczas gdy ich odniesienia pozostają na stosie.

Obiekty w Javie' loading='lazy' title=Obiekty Java (przykład psów)

Instancja obiektu

Tworzenie obiektu nazywa się tworzeniem instancji. Wszystkie instancje klasy mają wspólną strukturę i zachowanie, przechowując różne wartości stanu.

Deklarowanie obiektów w Javie' loading='lazy' title=Deklaracja obiektu Java

Deklaracja:

tuf dla psa;

To tylko deklaruje odniesienie. Obiekt nie został utworzony, a odwołanie ma wartość null.

Inicjalizacja:

tuffy = nowy Pies('Tuffy' 'Papillon' 5 'Biały');

Klasy i obiekty-w-Java-3-768' loading='lazy' title=Inicjalizacja

Operator new przydziela pamięć i wywołuje konstruktor.

Przykład: definiowanie i używanie klasy

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);  } } 

Wyjście
Name is: tuffy Breed age and color are: papillon 5 white 

Notatka: Każda klasa ma co najmniej jednego konstruktora. Jeśli żaden nie jest zdefiniowany, Java udostępnia domyślny konstruktor bezargumentowy, który wywołuje konstruktor nadrzędny.

Zainicjuj obiekt za pomocą metody/funkcji

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();  } } 

Wyjście
Software name is: Visual Studio Software price is: 0.0 

Sposoby tworzenia obiektów w Javie

Java obsługuje cztery standardowe podejścia.

1. Używanie nowego słowa kluczowego

Najbardziej bezpośredni sposób na utworzenie obiektu.

Java
// creating object of class Test  Test t = new Test(); 

2. Korzystanie z refleksji

Używany do dynamicznego ładowania klas, jak widać w frameworkach takich jak 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();  }  } } 

Wyjście
Student@1dbd16a6 

3. Korzystanie z metody clone().

clone() tworzy kopię istniejącego obiektu. Klasa musi implementować 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();  }  } } 

Wyjście
GeeksForGeeks 

4. Korzystanie z deserializacji

Deserializacja to technika odczytywania obiektu ze stanu zapisanego w pliku. Obiekt jest odtwarzany z zapisanego strumienia bajtów.

Patrz Serializacja/Deserializacja w Javie .

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(); }  } } 

Wyjście
Student: Alice 

Pojedyncze odniesienie może wskazywać na różne obiekty w różnym czasie.

Java
Test test = new Test(); test = new Test(); 

W przypadku dziedziczenia często używa się odniesienia do obiektu nadrzędnego dla obiektów podrzędnych.

Java
Animal obj = new Dog(); obj = new Cat(); 

Obiekty bez odniesień kwalifikują się do wyrzucania elementów bezużytecznych.

Obiekty anonimowe

Obiekty anonimowe tworzone są bez odniesienia i od razu wykorzystywane do jednorazowych operacji.

  • Brak zmiennej referencyjnej: Nie można ponownie wykorzystać obiektu.
  • Utworzone i używane natychmiast oszczędzają pamięć na krótkotrwałe zadania.
  • Powszechne w obsłudze zdarzeń (np. kliknięć przycisków).
Java
new Dog('Max' 'Labrador' 3 'Black').getName(); 

Powszechne w obsłudze zdarzeń interfejsu użytkownika.

Utwórz quiz