Преоптерећење конструктора у Јави: Шта је & амп; Примери програма

Преглед садржаја:

Anonim

Шта је конструктор у Јави?

КОНСТРУКТОР је посебна метода која се користи за иницијализацију новоствореног објекта и позива се непосредно након додељивања меморије за тај објекат. Може се користити за иницијализацију објеката на жељене вредности или подразумеване вредности у време стварања објекта. За кодер није обавезно да напише конструктор за класу.

Ако за класу није предвиђен кориснички дефинисан конструктор, компајлер иницијализује променљиве члана на своје подразумеване вредности.

  • нумерички типови података су постављени на 0
  • типови података цхар су постављени на нулл знак ('\ 0')
  • референтне променљиве су постављене на нулу

У овом упутству ћете научити-

  • Правила за креирање конструктора
  • Преоптерећење конструктора у Јави
  • Ланац конструктора

Правила за креирање Јава конструктора

  1. Има исто име као и разред
  2. Не би требало да врати вредност која није ни воид

Пример 1 : Креирајте свој први конструктор на Јави

Корак 1) Укуцајте следећи програм конструктора у Јава едитору.

class Demo{int value1;int value2;Demo(){value1 = 10;value2 = 20;System.out.println("Inside Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();d1.display();}}

Корак 2) Спремите, покрените и компајлирајте програм конструктора у Јави и посматрајте излаз.

Излаз:

Inside ConstructorValue1 === 10Value2 === 20

Преоптерећење конструктора у Јави

Преоптерећење Јава Цонструцтор-а је техника у којој класа може имати било који број конструктора који се разликују у листи параметара. Компајлер разликује ове конструкторе узимајући у обзир број параметара на листи и њихов тип.

Примери важећих конструктора за класу Аццоунт су

Account(int a);Account (int a,int b);Account (String a,int b);

Пример 2 : Разумевање преоптерећења конструктора у Јави

Корак 1) Унесите код у едитор.

class Demo{int value1;int value2;/*Demo(){value1 = 10;value2 = 20;System.out.println("Inside 1st Constructor");}*/Demo(int a){value1 = a;System.out.println("Inside 2nd Constructor");}Demo(int a,int b){value1 = a;value2 = b;System.out.println("Inside 3rd Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();Demo d2 = new Demo(30);Demo d3 = new Demo(30,40);d1.display();d2.display();d3.display();}}

Корак 2) Спремите, компајлирајте и покрените код.

Корак 3) Грешка =?. Покушајте да отклоните грешку пре него што пређете на следећи корак преоптерећења Јава конструктора

Корак 4) Свака класа има задати конструктор на Јави. Подразумевани преоптерећени конструктор Јава за класу Демо је Демо () . У случају да не наведете овај конструктор, компајлер га креира за вас и иницијализује променљиве на подразумеване вредности. Можете одабрати да замените овај задати конструктор и иницијализујете променљиве на ваше жељене вредности као што је приказано у примеру 1.

Али ако наведете параметризовани конструктор као што је Демо (инт а), и желите да користите подразумевани конструктор Јава Демо (), обавезно је да га наведете.

Другим речима, у случају да је ваш конструктор за преоптерећење у Јави замењен и ако желите да користите подразумевани конструктор Јава, потребно је да се наведе.

Корак 5) Унцоммент лине # 4-8. Сачувајте, компајлирајте и покрените код.

Ланац конструктора

Размотрите сценарио у коме основну класу продужава дете. Кад год се креира објекат подређене класе, прво се позива конструктор родитељске класе. То се назива ланац конструктора.

Пример 3: Разумевање ланца конструктора

Корак 1) Копирајте следећи код у едитор.

class Demo{int value1;int value2;Demo(){value1 = 1;value2 = 2;System.out.println("Inside 1st Parent Constructor");}Demo(int a){value1 = a;System.out.println("Inside 2nd Parent Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){DemoChild d1 = new DemoChild();d1.display();}}class DemoChild extends Demo{int value3;int value4;DemoChild(){//super(5);value3 = 3;value4 = 4;System.out.println("Inside the Constructor of Child");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);System.out.println("Value1 === "+value3);System.out.println("Value2 === "+value4);}}

Корак 2) Покрените код. Захваљујући ланцу конструктора, када се креира објекат подређене класе ДемоЦхилд, прво се позива конструктор Демо () родитељске класе, а касније се креира конструктор ДемоЦхилд () детета. Очекивани излаз =

Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4

Корак 3) Можете приметити да је конструктор родитељске класе Демо надјачан. Шта ако желите да позовете надјачани конструктор Демо (инт а) уместо подразумеваног конструктора Демо () када се креира ваш подређени објекат?

У таквим случајевима можете користити кључну реч „супер“ за позивање замењених конструктора родитељске класе.

Синтакса: -

super();--or--super(parameter list);

Пример: Ако је ваш конструктор попут Демо (Име низа, инт а) , навешћете супер ("Јава", 5) Ако се користи, кључна реч супер мора бити први ред кода у конструктору подређене класе.

Корак 4) Унцоммент Лине # 26 и покрените код. Посматрајте излаз.

Излаз:

Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4