logo

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

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

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

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

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

Клас 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' loading='lazy' title=Об’єкти Java (приклад собак)

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

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

Оголошення об'єктів у Java' loading='lazy' title=Оголошення об’єкта Java

Декларація:

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

Удачі

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

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

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

Classes-and-Objects-in-java-3-768' loading='lazy' title=Ініціалізація

Оператор 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(); 

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

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