У Java класи та об’єкти є основними поняттями об’єктно-орієнтованого програмування (ООП), які використовуються для представлення понять і сутностей реального світу. Клас представляє групу об'єктів, що мають подібні властивості та поведінку. Наприклад, тваринний тип Пес це клас, а певна собака називається Томмі є об'єктом Пес клас.
У цій статті ми обговоримо об’єкти та класи Java і те, як їх реалізувати в нашій програмі.
Класи Java
Клас у Java — це набір об’єктів, які мають спільні характеристики/поведінку та спільні властивості/атрибути. Це визначений користувачем план або прототип, з якого створюються об’єкти. Наприклад, Student є класом, тоді як певний студент на ім’я Ravi є об’єктом.
Властивості класів Java
- Клас не є сутністю реального світу. Це лише шаблон, або проект, або прототип, з якого створюються об’єкти.
- Клас не займає пам'ять.
- Клас — це група змінних різних типів даних і група методів.
- Клас у Java може містити:
- Член даних
- метод
- Конструктор
- Вкладений клас
- Інтерфейс
Оголошення класу в Java
access_modifier class < class_name>{ елемент даних; метод; конструктор; вкладений клас; інтерфейс; }> Приклад класу Java
Java
// Java Program for class example> class> Student {> >// data member (also instance variable)> >int> id;> >// data member (also instance variable)> >String name;> >public> static> void> main(String args[])> >{> >// creating an object of> >// Student> >Student s1 =>new> Student();> >System.out.println(s1.id);> >System.out.println(s1.name);> >}> }> |
>
>
Java
// Java program to Illustrate Creation of Object> // Using new Instance> // Main class> class> GFG {> >// Declaring and initializing string> >String name =>'GeeksForGeeks'>;> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Try block to check for exceptions> >try> {> >Class cls = Class.forName(>'GFG'>);> >// Creating object of main class> >// using instance method> >GFG obj = (GFG)cls.newInstance();> >// Print and display> >System.out.println(obj.name);> >}> >catch> (ClassNotFoundException e) {> >e.printStackTrace();> >}> >catch> (InstantiationException e) {> >e.printStackTrace();> >}> >catch> (IllegalAccessException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
обхід бінарного дерева поштою
Java
// Java program to Illustrate Creation of Object> // Using clone() method> // Main class> // Implementing Cloneable interface> class> GFG>implements> Cloneable {> >// Method 1> >@Override> >protected> Object clone()> >throws> CloneNotSupportedException> >{> >// Super() keyword refers to parent class> >return> super>.clone();> >}> >String name =>'GeeksForGeeks'>;> >// Method 2> >// main driver method> >public> static> void> main(String[] args)> >{> >GFG obj1 =>new> GFG();> >// Try block to check for exceptions> >try> {> >GFG obj2 = (GFG)obj1.clone();> >System.out.println(obj2.name);> >}> >catch> (CloneNotSupportedException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
Вихід 1
0 null>
Вихід 2
абстрактний клас може мати конструктор
GeeksForGeeks>
Вихід 3
GeeksForGeeks>
Компоненти класів Java
Загалом, оголошення класів можуть включати такі компоненти в порядку:
- Модифікатори : Клас може бути загальнодоступним або мати доступ за умовчанням (див це для деталей).
- Ключове слово класу: Ключове слово class використовується для створення класу.
- Назва класу: Ім'я має починатися з початкової літери (з великої літери).
- Суперклас (якщо є): Ім’я батьківського класу (суперкласу), якщо таке є, перед яким стоїть ключове слово extends. Клас може розширювати (підклас) лише одного батька.
- Інтерфейси (якщо є): Розділений комами список інтерфейсів, реалізованих класом, якщо такі є, перед яким стоїть ключове слово implements. Клас може реалізовувати більше одного інтерфейсу.
- Тіло: Тіло класу оточене дужками {}.
Конструктори використовуються для ініціалізації нових об'єктів. Поля - це змінні, які забезпечують стан класу та його об'єктів, а методи використовуються для реалізації поведінки класу та його об'єктів.
Існують різні типи класів, які використовуються в програмах реального часу, наприклад вкладені класи , анонімні заняття , і лямбда-вирази .
Об'єкти Java
Об’єкт у Java є базовою одиницею об’єктно-орієнтованого програмування та представляє реальні сутності. Об’єкти — це екземпляри класу, створені для використання атрибутів і методів класу. Типова програма Java створює багато об’єктів, які, як відомо, взаємодіють шляхом виклику методів. Об'єкт складається з:
- Держава : представлено атрибутами об’єкта. Він також відображає властивості об'єкта.
- Поведінка : представлено методами об’єкта. Він також відображає реакцію об'єкта на інші об'єкти.
- Ідентичність : це дає унікальне ім’я об’єкту та дозволяє одному об’єкту взаємодіяти з іншими об’єктами.
Приклад об'єкта: собака
Об'єкти Java
Об'єкти відповідають речам, які знаходяться в реальному світі. Наприклад, графічна програма може мати такі об’єкти, як коло, квадрат і меню. Система онлайн-покупок може мати такі об’єкти, як кошик для покупок, клієнт і продукт.
Примітка: Коли ми створюємо об’єкт, який є непримітивним типом даних, він завжди розміщується в пам’яті купи.
Оголошення об’єктів (також називається створенням екземпляра класу)
Коли об’єкт класу створюється, клас вважається таким екземпляр . Усі екземпляри мають спільні атрибути та поведінку класу. Але значення цих атрибутів, тобто стану, є унікальними для кожного об’єкта. Один клас може мати будь-яку кількість екземплярів.
приклад:
Оголошення об’єкта Java
Оскільки ми оголошуємо змінні, наприклад (назва типу;). Це сповіщає компілятор, що ми будемо використовувати назву для посилання на дані, тип яких дорівнює type. З примітивною змінною це оголошення також резервує належний обсяг пам’яті для змінної. Отже, для довідкових змінних типом має бути суворо конкретне ім’я класу. Загалом ми не може створювати об'єкти абстрактного класу або інтерфейсу.
Dog tuffy;>
Якщо ми оголосимо посилання на змінну (tuffy) таким чином, її значення буде невизначеним (null), доки об’єкт не буде створено та призначено їй. Просте оголошення змінної посилання не створює об’єкт.
Ініціалізація об'єкта Java
Оператор new створює екземпляр класу, виділяючи пам’ять для нового об’єкта та повертаючи посилання на цю пам’ять. Оператор new також викликає конструктор класу.
приклад:
Java
// Class Declaration> public> class> Dog {> >// Instance Variables> >String name;> >String breed;> >int> age;> >String color;> >// Constructor Declaration of Class> >public> Dog(String name, String breed,>int> age,> >String color)> >{> >this>.name = name;> >this>.breed = breed;> >this>.age = age;> >this>.color = color;> >}> >// method 1> >public> String getName() {>return> name; }> >// method 2> >public> String getBreed() {>return> breed; }> >// method 3> >public> int> getAge() {>return> age; }> >// method 4> >public> String getColor() {>return> color; }> >@Override> public> String toString()> >{> >return> (>'Hi my name is '> +>this>.getName()> >+>'.
My breed,age and color are '> >+>this>.getBreed() +>','> +>this>.getAge()> >+>','> +>this>.getColor());> >}> >public> static> void> main(String[] args)> >{> >Dog tuffy> >=>new> Dog(>'tuffy'>,>'papillon'>,>5>,>'white'>);> >System.out.println(tuffy.toString());> >}> }> |
>
>Вихід
Hi my name is tuffy. My breed,age and color are papillon,5,white>
Ініціалізувати за допомогою методу/функції:
Java
public> class> GFG {> >// sw=software> >static> String sw_name;> >static> float> sw_price;> >static> void> set(String n,>float> p)> >{> >sw_name = n;> >sw_price = p;> >}> >static> void> get()> >{> >System.out.println(>'Software name is: '> + sw_name);> >System.out.println(>'Software price is: '> >+ sw_price);> >}> >public> static> void> main(String args[])> >{> >GFG.set(>'Visual studio'>,>0>.0f);> >GFG.get();> >}> }> |
>
>Вихід
Software name is: Visual studio Software price is: 0.0>
Цей клас містить один конструктор. Ми можемо розпізнати конструктор, оскільки його оголошення використовує те саме ім’я, що й клас, і він не має типу повернення. Компілятор Java розрізняє конструктори на основі кількості та типу аргументів. Конструктор в Пес клас приймає чотири аргументи. Наступний оператор надає значення tuffy, papillon, 5 і white для цих аргументів:
цикли java
Dog tuffy = new Dog('tuffy','papillon',5, 'white');> Результат виконання цього оператора можна проілюструвати так:
Розподіл пам'яті для об'єктів Java
Примітка: Усі класи мають принаймні один конструктор. Якщо клас явно не оголошує нічого, компілятор Java автоматично надає конструктор без аргументів, також званий конструктором за замовчуванням. Цей конструктор за замовчуванням викликає конструктор батьківського класу без аргументів (оскільки він містить лише один оператор, наприклад super();), або Об'єкт конструктор класу, якщо клас не має іншого батька (оскільки клас Object є батьком усіх класів прямо чи опосередковано).
Способи створення об’єкта класу
Існує чотири способи створення об’єктів у Java. Строго кажучи, є лише один спосіб (за допомогою a новий ключове слово), а решта внутрішньо використовують a новий ключове слово.
1. Використання нового ключового слова
Це найпоширеніший і загальний спосіб створення об’єкта в Java.
приклад:
// creating object of class Test Test t = new Test();>
2. Використання методу Class.forName(String className).
У пакеті java.lang є попередньо визначений клас із назвою Class. Метод forName(String className) повертає об’єкт Class, пов’язаний із класом із вказаною назвою рядка. Ми повинні дати повну назву для класу. Під час виклику методу new Instance() для цього об’єкта Class повертається новий екземпляр класу з вказаною назвою рядка.
// creating object of public class Test // consider class Test present in com.p1 package Test obj = (Test)Class.forName('com.p1.Test').newInstance();> 3. Використання методу clone().
метод clone() присутній у класі Object. Він створює та повертає копію об’єкта.
// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>
4. Десеріалізація
Десеріалізація — це техніка читання об’єкта зі збереженого стану у файлі. Відноситься до Серіалізація/десеріалізація в Java
FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>
Створення кількох об’єктів лише за одним типом (хороша практика)
У реальному часі нам потрібні різні об’єкти класу в різних методах. Створення кількох посилань для їх зберігання не є хорошою практикою, тому ми оголошуємо статичну посилальну змінну та використовуємо її, коли потрібно. У цьому випадку втрата пам'яті менша. Об’єкти, на які більше немає посилань, будуть знищені Збирач сміття Яви.
приклад:
Test test = new Test(); test = new Test();>
У системі успадкування ми використовуємо посилальну змінну батьківського класу для зберігання об’єкта підкласу. У цьому випадку ми можемо перейти до різних об’єктів підкласу, використовуючи ту саму змінну, на яку посилається.
приклад:
class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); }> Анонімні об'єкти в Java
Анонімні об’єкти – це об’єкти, екземпляри яких не зберігаються в посилальній змінній.
- Вони використовуються для миттєвих викликів методів.
- Вони будуть знищені після виклику методу.
- Вони широко використовуються в різних бібліотеках. Наприклад, у бібліотеках AWT вони використовуються для виконання деяких дій із запису події (наприклад, натискання клавіші).
- У прикладі нижче, коли натиснуто клавішу (на яку посилається btn), ми просто створюємо анонімний об’єкт класу EventHandler для простого виклику методу handle.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });> Різниця між класом Java та об’єктами
Відмінності між класом і об'єктом в Java такі:
| Клас | Об'єкт |
|---|---|
| Клас - це схема об'єкта. Використовується для створення об'єктів. | Об’єкт є екземпляром класу. |
| При оголошенні класу пам'ять не виділяється. | Пам'ять виділяється, як тільки створюється об'єкт. |
| Клас - це група подібних об'єктів. | Об’єкт – це об’єкт реального світу, наприклад книга, автомобіль тощо. |
| Клас - це логічна сутність. | Об’єкт – це фізична сутність. |
| Клас можна оголосити лише один раз. | Об’єкти можна створювати багато разів відповідно до вимог. |
| Прикладом класу може бути автомобіль. | Об'єктами класу автомобіля можуть бути BMW, Mercedes, Ferrari та ін. |