Класи та об'єкти в Java
У Java класи та об’єкти складають основу об’єктно-орієнтованого програмування (ООП). Вони допомагають моделювати об’єкти реального світу та організовувати код у структурований спосіб.
- Клас — це план, який використовується для створення об’єктів, які мають спільні властивості та поведінку.
- Об’єкт – це екземпляр класу. Він представляє певну сутність, створену з шаблону класу.
Наприклад, Dog — це клас Tommy — об’єкт цього класу.
Класи та об’єкти (тут Собака – це клас, а Боббі – об’єкт) Клас 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');
Ініціалізація Оператор 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 ();
Об’єкти без посилання стають придатними для збирання сміття.
Анонімні об'єкти
Анонімні об'єкти створюються без посилання і використовуються відразу для одноразових операцій.
- Немає посилальної змінної: неможливо повторно використати об’єкт.
- Створено та використано миттєво зберігає пам’ять для короткочасних завдань.
- Загальне в обробці подій (наприклад, натискання кнопки).
new Dog ( 'Max' 'Labrador' 3 'Black' ). getName ();
Загальне в обробці подій інтерфейсу користувача.
Створіть вікторину