Класи та об'єкти в Java

Класи та об'єкти в Java

У Java класи та об’єкти складають основу об’єктно-орієнтованого програмування (ООП). Вони допомагають моделювати об’єкти реального світу та організовувати код у структурований спосіб.

  • Клас — це план, який використовується для створення об’єктів, які мають спільні властивості та поведінку.
  • Об’єкт – це екземпляр класу. Він представляє певну сутність, створену з шаблону класу.

Наприклад, Dog — це клас Tommy — об’єкт цього класу.

Class_Object_exampleКласи та об’єкти (тут Собака – це клас, а Боббі – об’єкт)

Клас Java

Клас — це план, який визначає дані та поведінку об’єктів. Він об’єднує пов’язані поля та методи в один блок. Пам'ять для його членів виділяється лише під час створення об'єкта.

  • Діє як шаблон для створення об’єктів зі спільною структурою.
  • Не займає пам'ять для полів до створення екземпляра.
  • Може містити поля, методи, конструктори, вкладені класи та інтерфейси.
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  );      }   }   

Вихід
10 Alice  

Об'єкти Java

Об’єкт — це екземпляр класу, створений для доступу до його даних і операцій. Кожен об'єкт має свій власний стан.

  • Держава : значення, що зберігаються в полях.
  • Поведінка : дії, визначені за допомогою методів.
  • Ідентичність : Відрізняє один предмет від іншого.

Об’єкти відображають предмети реального світу, такі як продукт клієнта або коло. Непримітивні об’єкти зберігаються в купі, а їхні посилання залишаються в стеку.

ОбОб’єкти Java (приклад собак)

Створення екземпляра об’єкта

Створення об’єкта називається інстанціюванням. Усі екземпляри класу мають спільну структуру та поведінку, зберігаючи різні значення стану.

Оголошення обОголошення об’єкта Java

Декларація:

собачий туфлі;

Це лише оголошує посилання. Об’єкт не створено, а посилання має нульове значення.

Ініціалізація:

tuffy = new Dog('Tuffy' 'Papillon' 5 'White');

Classes-and-Objects-in-java-3-768Ініціалізація

Оператор new виділяє пам'ять і викликає конструктор.

Приклад: визначення та використання класу

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

Вихід
Name is: tuffy Breed age and color are: papillon 5 white  

Примітка: Кожен клас має принаймні один конструктор. Якщо жодного не визначено, Java надає типовий конструктор без аргументів, який викликає батьківський конструктор.

Ініціалізація об’єкта за допомогою методу/функції

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

Вихід
Software name is: Visual Studio Software price is: 0.0  

Способи створення об’єктів у Java

Java підтримує чотири стандартні підходи.

1. Використання нового ключового слова

Найбільш прямий спосіб створення об'єкта.

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

2. Використання рефлексії

Використовується для динамічного завантаження класу, як це видно у таких фреймворках, як 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  ();      }      }   }   

Вихід
Student@1dbd16a6  

3. Використання методу clone().

clone() створює копію існуючого об'єкта. Клас повинен реалізовувати 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  ();      }      }   }   

Вихід
GeeksForGeeks  

4. Використання десеріалізації

Десеріалізація — це техніка читання об’єкта зі збереженого стану у файлі. Об'єкт відтворюється із збереженого потоку байтів.

Зверніться до Серіалізація/десеріалізація в Java .

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

Вихід
Student: Alice  

Одне посилання може вказувати на різні об’єкти в різний час.

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

У спадкуванні зазвичай використовують батьківське посилання для дочірніх об’єктів.

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

Об’єкти без посилання стають придатними для збирання сміття.

Анонімні об'єкти

Анонімні об'єкти створюються без посилання і використовуються відразу для одноразових операцій.

  • Немає посилальної змінної: неможливо повторно використати об’єкт.
  • Створено та використано миттєво зберігає пам’ять для короткочасних завдань.
  • Загальне в обробці подій (наприклад, натискання кнопки).
Java
   new     Dog  (  'Max'       'Labrador'       3       'Black'  ).  getName  ();   

Загальне в обробці подій інтерфейсу користувача.

Створіть вікторину