logo

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

Конструктори Java або конструктори в Java — це термінологія, яка використовується для створення чогось у наших програмах. Конструктор в Java - це a спеціальний метод який використовується для ініціалізації об'єктів. Конструктор викликається, коли створюється об’єкт класу. Його можна використовувати для встановлення початкових значень атрибутів об’єкта.

Що таке конструктори в Java?

У Java конструктор — це блок кодів, подібний до методу. Він викликається, коли створюється екземпляр класу. У момент виклику конструктора пам'ять для об'єкта виділяється в пам'яті. Це особливий тип методу, який використовується для ініціалізації об’єкта. Щоразу, коли об’єкт створюється за допомогою ключового слова new(), викликається принаймні один конструктор.

fmovies

Приклад конструктора Java

Нижче наведено реалізацію конструкторів Java:



Java
// Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks {    // Constructor  Geeks()  {  super();  System.out.println('Constructor Called');  }  // main function  public static void main(String[] args)  {  Geeks geek = new Geeks();  } }>

Вихід
Constructor Called>

Примітка: Для класу не обов'язково писати конструктор. Це тому, що компілятор Java створює конструктор за замовчуванням (конструктор без аргументів), якщо ваш клас їх не має.

Чим конструктори Java відрізняються від методів Java?

  • Конструктори повинні мати те саме ім’я, що й клас, у якому вони визначені, це не обов’язково для методу в Java.
  • Конструктори не повертають жодного типу, тоді як метод(и) мають тип повернення або недійсний якщо не повертає жодного значення.
  • Конструктори викликаються лише один раз під час створення об’єкта, тоді як метод(и) можна викликати будь-яку кількість разів.

Тепер давайте придумаємо синтаксис для конструктора, який викликається під час створення об’єкта або екземпляра.

class Geek {   .......  // A Constructor  Geek() {  }  ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>

Перший рядок конструктора — це виклик super() або this(), (виклик конструктора суперкласу або перевантаженого конструктора), якщо ви не введете виклик super у своєму конструкторі, компілятор надасть вам безаргументний виклик super у першому рядку вашого коду, для створення об’єкта потрібно викликати конструктор super:

Якщо ви думаєте, що ваш клас не є підкласом, то кожен клас у Java є підкласом класу об'єкт навіть якщо ви не скажете розширює об’єкт у своєму визначенні класу.

Потреба в конструкторах в Java

Подумайте про коробку. Якщо ми говоримо про коробковий клас, то він матиме деякі змінні класу (скажімо, довжину, ширину та висоту). Але коли справа доходить до створення його об’єкта (тобто коробка тепер існуватиме в пам’яті комп’ютера), то чи може коробка бути там без значення, визначеного для її розмірів? Відповідь - Н О .
Отже, конструктори використовуються для призначення значень змінним класу під час створення об’єкта, або явно зробленого програмістом, або самою Java (конструктор за замовчуванням).

Коли викликається конструктор Java?

Щоразу, коли об’єкт створюється за допомогою a новий() ключове слово, принаймні один конструктор (це може бути конструктор за замовчуванням) викликається для призначення початкових значень члени даних того ж класу. Правила написання конструкторів такі:

  • Конструктор(и) класу повинен мати те саме ім’я, що й ім’я класу, в якому він знаходиться.
  • Конструктор у Java не може бути абстрактним, кінцевим, статичним або синхронізованим.
  • Модифікатори доступу можна використовувати в декларації конструктора, щоб контролювати його доступ, тобто який інший клас може викликати конструктор.

Отже, ми зрозуміли, що для ініціалізації стану об’єкта використовуються конструктори. Люблю методи , конструктор також містить набір інструкцій (тобто інструкцій), які виконуються під час створення об’єкта.

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

Зараз саме час обговорити типи конструкторів, тому в основному в Java є три типи конструкторів, які згадуються нижче:

  • Конструктор за замовчуванням
  • Параметризований конструктор
  • Конструктор копіювання

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

Конструктор, який не має параметрів, називається конструктором за замовчуванням. Конструктор за замовчуванням невидимий. І якщо ми пишемо конструктор без аргументів, компілятор не створює конструктор за замовчуванням. Його виймають. Його перевантажують і називають параметризованим конструктором. Конструктор за замовчуванням змінено на параметризований конструктор. Але параметризований конструктор не може змінити конструктор за замовчуванням. Конструктор за замовчуванням може бути неявним або явним. Якщо ми не визначимо явно, ми отримаємо неявний конструктор за замовчуванням. Якщо ми вручну пишемо конструктор, неявний конструктор перевизначається.

приклад:

Java
// Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG {  // Default Constructor  GFG() { System.out.println('Default constructor'); }  // Driver function  public static void main(String[] args)  {  GFG hello = new GFG();  } }>

Вихід
Default constructor>

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

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

Конструктор, який має параметри, називається параметризованим конструктором. Якщо ми хочемо ініціалізувати поля класу нашими власними значеннями, тоді використовуйте параметризований конструктор.

приклад:

фрагмент java масиву
Java
// Java Program for Parameterized Constructor import java.io.*; class Geek {  // data members of the class.  String name;  int id;  Geek(String name, int id)  {  this.name = name;  this.id = id;  } } class GFG {  public static void main(String[] args)  {  // This would invoke the parameterized constructor.  Geek geek1 = new Geek('Avinash', 68);  System.out.println('GeekName :' + geek1.name  + ' and GeekId :' + geek1.id);  } }>

Вихід
GeekName :Avinash and GeekId :68>

Пам’ятайте: чи повертає конструктор якесь значення?

У конструкторі немає операторів повернення значення, але конструктор повертає поточний екземпляр класу. Ми можемо написати «повернення» всередині конструктора.

Тепер найважливішою темою, яка вступає в гру, є сильна інтеграція OOPS з конструкторами, відома як перевантаження конструктора. Як і методи, ми можемо різними способами перевантажувати конструктори для створення об’єктів. Компілятор розрізняє конструктори на основі кількості параметрів, типів параметрів і порядку параметрів.

приклад:

Java
// Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek {  // constructor with one argument  Geek(String name)  {  System.out.println('Constructor with one '  + 'argument - String : ' + name);  }  // constructor with two arguments  Geek(String name, int age)  {  System.out.println(  'Constructor with two arguments : '  + ' String and Integer : ' + name + ' ' + age);  }  // Constructor with one argument but with different  // type than previous..  Geek(long id)  {  System.out.println(  'Constructor with one argument : '  + 'Long : ' + id);  } } class GFG {  public static void main(String[] args)  {  // Creating the objects of the class named 'Geek'  // by passing different arguments  // Invoke the constructor with one argument of  // type 'String'.  Geek geek2 = new Geek('Shikhar');  // Invoke the constructor with two arguments  Geek geek3 = new Geek('Dharmesh', 26);  // Invoke the constructor with one argument of  // type 'Long'.  Geek geek4 = new Geek(325614567);  } }>

Вихід
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>

3. Копіювати конструктор в Java

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

Примітка: У Java немає такого вбудованого конструктора копіювання, як в інших мовах програмування, таких як C++, натомість ми можемо створити власний конструктор копіювання, передавши об’єкт того самого класу іншому екземпляру (об’єкту) класу.

приклад:

Java
// Java Program for Copy Constructor import java.io.*; class Geek {  // data members of the class.  String name;  int id;  // Parameterized Constructor  Geek(String name, int id)  {  this.name = name;  this.id = id;  }  // Copy Constructor  Geek(Geek obj2)  {  this.name = obj2.name;  this.id = obj2.id;  } } class GFG {  public static void main(String[] args)  {  // This would invoke the parameterized constructor.  System.out.println('First Object');  Geek geek1 = new Geek('Avinash', 68);  System.out.println('GeekName :' + geek1.name  + ' and GeekId :' + geek1.id);  System.out.println();  // This would invoke the copy constructor.  Geek geek2 = new Geek(geek1);  System.out.println(  'Copy Constructor used Second Object');  System.out.println('GeekName :' + geek2.name  + ' and GeekId :' + geek2.id);  } }>

Вихід
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Щоб дізнатися більше про конструктори, існують дві широко використовувані концепції, перелічені нижче:

  • Зв'язування конструктора
  • Конструктор копіювання

Поширені запитання щодо конструкторів Java

1. Що таке конструктор у Java?

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

2. Чи може конструктор Java бути закритим?

Так, конструктор можна оголосити приватним. Приватний конструктор використовується для обмеження створення об’єктів.