Klasy i obiekty w Javie

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ładKlasy 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 JavieObiekty 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 JavieDeklaracja 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-768Inicjalizacja

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