logo

Конструктори в Java

  1. Види конструкторів
    1. Конструктор за замовчуванням
    2. Параметризований конструктор
  2. Перевантаження конструктора
  3. Чи повертає конструктор якесь значення?
  4. Копіювання значень одного об'єкта в інший
  5. Чи виконує конструктор інші завдання замість ініціалізації

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

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

Щоразу, коли об’єкт створюється за допомогою ключового слова new(), викликається принаймні один конструктор.

Він викликає конструктор за замовчуванням, якщо в класі відсутній конструктор. У такому випадку компілятор Java надає типовий конструктор.

У Java є два типи конструкторів: конструктор без аргументів і параметризований конструктор.

Примітка: Його називають конструктором, оскільки він створює значення під час створення об’єкта. Для класу не обов'язково писати конструктор. Це тому, що компілятор Java створює конструктор за замовчуванням, якщо у вашому класі його немає.

Правила створення конструктора Java

Для конструктора визначено два правила.

аля манаса
  1. Ім'я конструктора має збігатися з ім'ям його класу
  2. Конструктор не повинен мати явного типу повернення
  3. Конструктор Java не може бути абстрактним, статичним, остаточним і синхронізованим

Примітка: ми можемо використовувати модифікатори доступу при оголошенні конструктора. Він контролює створення об'єкта. Іншими словами, ми можемо мати приватний, захищений, публічний або типовий конструктор у Java.

Типи конструкторів Java

У Java є два типи конструкторів:

  1. Конструктор за замовчуванням (конструктор без аргументів)
  2. Параметризований конструктор
Конструктори Java

Конструктор Java за замовчуванням

Конструктор називається «Конструктором за замовчуванням», якщо він не має параметрів.

Синтаксис конструктора за замовчуванням:

 (){} 

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

У цьому прикладі ми створюємо конструктор без аргументів у класі Bike. Він буде викликаний під час створення об'єкта.
 //Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } } 
Перевірте зараз

Вихід:

 Bike is created 

Правило: якщо в класі немає конструктора, компілятор автоматично створює конструктор за замовчуванням.

Конструктор Java за замовчуванням

Q) Яке призначення конструктора за замовчуванням?

Конструктор за замовчуванням використовується для надання значень за замовчуванням об’єкту, наприклад 0, null тощо, залежно від типу.

Приклад конструктора за замовчуванням, який відображає значення за замовчуванням

 //Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } } 
Перевірте зараз

Вихід:

 0 null 0 null 

Пояснення: У наведеному вище класі ви не створюєте жодного конструктора, тому компілятор надає вам конструктор за замовчуванням. Тут 0 і нульові значення надаються конструктором за замовчуванням.


Параметризований конструктор Java

Конструктор, який має певну кількість параметрів, називається параметризованим конструктором.

Навіщо використовувати параметризований конструктор?

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

Приклад параметризованого конструктора

У цьому прикладі ми створили конструктор класу Student, який має два параметри. Ми можемо мати будь-яку кількість параметрів у конструкторі.

 //Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } } 
Перевірте зараз

Вихід:

 111 Karan 222 Aryan 

Перевантаження конструктора в Java

У Java конструктор схожий на метод, але без типу повернення. Він також може бути перевантажений, як і методи Java.

Конструктор перевантаження в Java це техніка, що має більше одного конструктора з різними списками параметрів. Вони розташовані таким чином, що кожен конструктор виконує інше завдання. Вони розрізняються компілятором за кількістю параметрів у списку та їх типами.

Приклад перевантаження конструктора

 //Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } } 
Перевірте зараз

Вихід:

 111 Karan 0 222 Aryan 25 

Різниця між конструктором і методом у Java

Існує багато відмінностей між конструкторами та методами. Вони наведені нижче.

перевести рядок як int
Конструктор JavaМетод Java
Для ініціалізації стану об’єкта використовується конструктор.Метод використовується для виявлення поведінки об’єкта.
Конструктор не повинен мати тип повернення.Метод повинен мати тип повернення.
Конструктор викликається неявно.Метод викликається явно.
Компілятор Java надає конструктор за замовчуванням, якщо у вас немає жодного конструктора в класі.Метод не надається компілятором у будь-якому випадку.
Ім'я конструктора має збігатися з ім'ям класу.Назва методу може збігатися з назвою класу, а може і не збігатися.

Конструктори Java проти методів

Конструктор копіювання Java

У Java немає конструктора копіювання. Однак ми можемо копіювати значення з одного об’єкта в інший, як конструктор копіювання в C++.

У Java існує багато способів копіювання значень одного об’єкта в інший. Вони є:

  • За конструктором
  • Шляхом присвоєння значень одного об’єкта іншому
  • Методом clone() класу Object

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

 //Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Перевірте зараз

Вихід:

 111 Karan 111 Karan 

Копіювання значень без конструктора

Ми можемо скопіювати значення одного об’єкта в інший, присвоївши значення об’єктів іншому об’єкту. У цьому випадку немає необхідності створювати конструктор.

 class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } } 
Перевірте зараз

Вихід:

 111 Karan 111 Karan 

Q) Чи повертає конструктор якесь значення?

Так, це поточний екземпляр класу (ви не можете використовувати тип повернення, але він повертає значення).


Чи може конструктор виконувати інші завдання замість ініціалізації?

Так, як-от створення об’єкта, запуск потоку, виклик методу тощо. Ви можете виконувати будь-яку операцію в конструкторі так само, як і в методі.


Чи є в Java клас Constructor?

Так.


Яке призначення класу Constructor?

Java надає клас Constructor, який можна використовувати для отримання внутрішньої інформації про конструктор у класі. Його можна знайти в пакеті java.lang.reflect.