Какво е конструктор в Java?
CONSTRUCTOR е специален метод, който се използва за инициализиране на новосъздаден обект и се извиква веднага след като паметта е разпределена за обекта. Може да се използва за инициализиране на обектите до желани стойности или стойности по подразбиране по време на създаването на обекта. Не е задължително кодерът да пише конструктор за клас.
Ако за клас не е предоставен дефиниран от потребителя конструктор, компилаторът инициализира променливите-членове до стойностите си по подразбиране.
- числовите типове данни са зададени на 0
- типовете данни char са зададени на нулев знак ('\ 0')
- референтните променливи са настроени на нула
В този урок ще научите -
- Правила за създаване на конструктор
- Претоварване на конструктора в Java
- Конструктор верига
Правила за създаване на Java конструктор
- Той има същото име като класа
- Не трябва да връща стойност, която дори не е анулирана
Пример 1 : Създайте своя първи конструктор в Java
Стъпка 1) Въведете следната програма за конструктор в Java редактор.
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) Запазете, стартирайте и компилирайте конструкторската програма в Java и наблюдавайте изхода.
Изход:
Inside ConstructorValue1 === 10Value2 === 20
Претоварване на конструктора в Java
Претоварването на Java Constructor е техника, при която клас може да има произволен брой конструктори, които се различават в списъка с параметри. Компилаторът разграничава тези конструктори, като взема предвид броя на параметрите в списъка и техния тип.
Примери за валидни конструктори за клас Account са
Account(int a);Account (int a,int b);Account (String a,int b);
Пример 2 : Да се разбере претоварването на конструктора в Java
Стъпка 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) Грешка =?. Опитайте и отстранете грешката на грешката, преди да преминете към следващата стъпка от претоварването на Java конструктор
Стъпка 4) Всеки клас има конструктор по подразбиране в Java. Претовареният конструктор по подразбиране Java за клас Demo е Demo () . В случай че не предоставите този конструктор, компилаторът го създава за вас и инициализира променливите до стойности по подразбиране. Можете да изберете да замените този конструктор по подразбиране и да инициализирате променливите до желаните от вас стойности, както е показано в пример 1.
Но ако посочите параметризиран конструктор като Demo (int a) и искате да използвате конструктора по подразбиране Java Demo (), за вас е задължително да го посочите.
С други думи, в случай че вашият конструктор за претоварване в Java е заменен и искате да използвате конструктора Java по подразбиране, трябва да бъде посочен.
Стъпка 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) Стартирайте кода. Благодарение на верижния конструктор, когато се създава обектът на дъщерния клас DemoChild, първо се извиква конструктор Demo () на родителския клас и по-късно се създава конструктор DemoChild () на детето. Очакван резултат =
Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4
Стъпка 3) Можете да наблюдавате, че конструкторът на родителския клас Demo е заменен. Какво ще стане, ако искате да извикате заменения конструктор Demo (int a) вместо конструктора по подразбиране Demo (), когато вашият детски обект е създаден?
В такива случаи можете да използвате ключовата дума "супер", за да извикате заменени конструктори на родителския клас.
Синтаксис:-
super();--or--super(parameter list);
Пример: Ако вашият конструктор е като Demo (Име на низ, int a) , ще посочите super ("Java", 5) Ако се използва, ключовата дума super трябва да бъде първият ред на кода в конструктора на дъщерния клас.
Стъпка 4) Разкоментирайте ред # 26 и стартирайте кода. Наблюдавайте изхода.
Изход:
Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4