logo

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

  1. Видове конструктори
    1. Конструктор по подразбиране
    2. Параметризиран конструктор
  2. Претоварване на конструктора
  3. Конструкторът връща ли някаква стойност?
  4. Копиране на стойностите на един обект в друг
  5. Конструкторът изпълнява ли други задачи вместо инициализацията

в Java , конструкторът е блок от кодове, подобни на метода. Извиква се, когато екземпляр на клас е създаден. По време на извикването на конструктора паметта за обекта се разпределя в паметта.

Това е специален тип метод, който се използва за инициализиране на обекта.

Всеки път, когато се създава обект с помощта на ключовата дума new(), се извиква поне един конструктор.

Той извиква конструктор по подразбиране, ако в класа няма наличен конструктор. В такъв случай Java компилаторът предоставя конструктор по подразбиране.

В 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 конструктор по подразбиране

В) Каква е целта на конструктора по подразбиране?

Конструкторът по подразбиране се използва за предоставяне на стойностите по подразбиране на обекта като 0, нула и т.н., в зависимост от типа.

Пример за конструктор по подразбиране, който показва стойностите по подразбиране

 //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 и null стойности се предоставят от конструктора по подразбиране.


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

Има много разлики между конструктори и методи. Те са дадени по-долу.

кайли дженър братя и сестри
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 

В) Конструкторът връща ли някаква стойност?

Да, това е текущият екземпляр на класа (Не можете да използвате тип връщане, но той връща стойност).


Може ли конструкторът да изпълнява други задачи вместо инициализация?

Да, като създаване на обект, стартиране на нишка, извикване на метод и т.н. Можете да извършите всяка операция в конструктора, както извършвате в метода.


Има ли клас Constructor в Java?

да


Каква е целта на класа Constructor?

Java предоставя клас Constructor, който може да се използва за получаване на вътрешна информация за конструктор в класа. Намира се в пакета java.lang.reflect.