Слово класу походить від класифікації ( A Категорія , в яку кладеться що - то ), тепер ми всі чули , що клас подібний Blueprint, але що це означає в точності? Це означає, що Клас містить Опис певної Категорії, ( я хотів би показати різницю між Класом, Об'єктом та Екземпляром на прикладі використання Java, і я б попросив читачів візуалізувати це як Історію під час читання, і якщо Ви не знайомі з java не має значення ) Отже, давайте почнемо з створення категорії, яка називається HumanBeing , тому програма Java виразить це наступним чином
class HumanBeing{
/*We will slowly build this category*/
}
Тепер, які атрибути має HumanBeing загалом Ім'я , Вік , Зріст , Вага, наразі обмежимо себе цими чотирма атрибутами, додамо його до нашої категорії
class HumanBeing{
private String Name;
private int Age;
private float Height;
private float Weight;
/*We still need to add methods*/
}
Тепер кожна категорія має поведінку, наприклад категорія Собака має поведінку гавкати, діставати, катати тощо ..., Аналогічно наша категорія HumanBeing також може мати певну поведінку, наприклад, коли ми запитуємо наш HumanBeing, як вас звати / вік / вага / висота? Це має дати нам його ім'я / вік / вагу / зріст, тому в Java ми робимо це наступним чином
class HumanBeing{
private String Name;
private int Age;
private float Height;
private float Weight;
public HumanBeing(String Name,int Age,float Height,float Weight){
this.Name = Name;
this.Age = Age;
this.Height = Height;
this.Weight = Weight;
}
public String getName(){
return this.Name;
}
public int getAge(){
return this.age;
}
public float getHeight(){
return this.Height;
}
public float getWeight(){
return this.Weight;
}
}
Тепер ми додали поведінку до нашої категорії HumanBeing , тому ми можемо запитати його назву, вік, зріст, вагу, але у кого ви запитаєте ці деталі, оскільки class HumanBeing
це просто категорія, це план, наприклад, архітектор робить план на папір будівлі, яку він хоче побудувати, тепер ми не можемо продовжувати жити в проекті ( опис будівлі ), ми можемо жити в будівлі лише після її побудови. Отже, тут нам потрібно зробити людину з нашої категорії, яку ми описали вище, тож як ми це робимо на Java
class Birth{
public static void main(String [] args){
HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
}
}
Тепер у наведеному вище прикладі ми створили свою першу людину з ім’ям вік зріст вага, то що саме відбувається у наведеному вище коді? . Ми інстанцірованія нашої категорії HumanBeing тобто об'єкта створюються наш клас
Примітка: Object і Instance не є синонімами. У деяких випадках здається, що Object і Instance є синонімами, але це не так, я наведу обидва випадки
Випадок 1: Об’єкт і Екземпляр здаються синонімами.
Дозвольте трохи детальніше розказати, коли ми говоримо, що HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
об’єкт нашої категорії створюється в купі пам’яті, і якась адреса виділяється йому, і firstHuman
містить посилання на цю адресу, тепер цей об’єкт Об'єкт HumanBeing, а також Екземпляр HumanBeing . Тут здається, що Об’єкти та Екземпляр - це синоніми, я повторюся, що це не синоніми
Давайте продовжимо нашу історію, ми створили свою першу Людину, тепер ми можемо запитати його ім'я, вік, зріст, вагу, так ми робимо це на Java
class Birth{
public static void main(String [] args){
HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
System.out.println(firstHuman.getName());
System.out.println(firstHuman.getAge());
...
...
}
}
отже, ми маємо першу людину і дозволяємо рухатись пером, надаючи нашій першій людині якусь кваліфікацію, давайте зробимо його доктором, тому нам потрібна категорія під назвою доктор і надає нашому докторові якусь поведінку, тому в Java ми робимо наступне
class Doctor extends HumanBeing{
public Doctor(String Name,int Age,float Height,float Weight){
super(Name,Age,Height,Weight);
}
public void doOperation(){
/* Do some Operation*/
}
public void doConsultation(){
/* Do so Consultation*/
}
}
Тут ми використали концепцію успадкування, яка приносить деяку можливість повторного використання в коді. Кожен лікар завжди буде першим людиною, тому лікар матиме ім’я, вік, вагу, зріст, які будуть успадковані від HumanBeing замість того, щоб писати їх знову, зауважте, що ми щойно написали опис лікаря, якого ще не створили, тож давайте створимо лікаря в нашомуclass Birth
class Birth{
public static void main(String [] args){
Doctor firstDoctor = new Doctor("Strange",40,6,80);
.......
.......
/*Assume some method calls , use of behaviour*/
.......
.......
}
}
Випадок 2: Об'єкт та Екземпляр не є синонімами
У наведеному вище коді ми можемо уявити, що ми інстансуємо нашу категорію Лікар та реалізовуємо її, тобто ми просто створюємо Об'єкт категорії Лікар , оскільки ми вже знаємо, що Об'єкт створюється в кучевій пам'яті і firstDoctor
містить посилання на цей Об’єкт у купі;
Цей конкретний Об’єкт firstDoctor
виглядає наступним чином (будь ласка, зверніть увагу, що firstDoctor
в ньому є посилання на об’єкт, це не сам об’єкт)
firstDoctor
є об'єктомclass Doctor
і екземпляром Aclass Doctor
firstDoctor
є не об'єктом,class HumanBeing
а екземпляромclass HumanBeing
Отже, конкретний Об’єкт може бути екземпляром певного класу, але він не повинен бути об’єктом даного класу
Висновок:
Об’єкт називається Екземпляром певної категорії, якщо він задовольняє всім характеристикам цієї конкретної категорії
Приклад із реального світу буде таким: ми спочатку народилися як Люди, так уявляємо нас як Об’єкт Людини, тепер, коли ми дорослішаємо, ми беремо на себе обов’язки та вивчаємо нові навички та граємо різні ролі в житті Приклад Син, брат, дочка, батько , мамо зараз Що ми насправді? Ми можемо сказати, що ми - об'єкти людини, але випадки брата, дочки, ... тощо
Сподіваюся, це допоможе
Дякую