logo

Konstruktory w Javie

  1. Rodzaje konstruktorów
    1. Domyślny konstruktor
    2. Konstruktor parametryczny
  2. Przeciążenie konstruktora
  3. Czy konstruktor zwraca jakąś wartość?
  4. Kopiowanie wartości jednego obiektu do drugiego
  5. Czy konstruktor wykonuje inne zadania zamiast inicjalizacji

W Jawa , konstruktor jest blokiem kodów podobnym do metody. Jest wywoływana, gdy instancja klasa jest tworzone. W momencie wywołania konstruktora w pamięci zostaje przydzielona pamięć dla obiektu.

Jest to specjalny typ metody używany do inicjalizacji obiektu.

Za każdym razem, gdy obiekt jest tworzony przy użyciu słowa kluczowego new(), wywoływany jest co najmniej jeden konstruktor.

Wywołuje konstruktor domyślny, jeśli w klasie nie ma dostępnego konstruktora. W takim przypadku kompilator Java domyślnie udostępnia konstruktor domyślny.

W Javie istnieją dwa typy konstruktorów: konstruktor bezargumentowy i konstruktor sparametryzowany.

Notatka: Nazywa się go konstruktorem, ponieważ konstruuje wartości w momencie tworzenia obiektu. Nie jest konieczne pisanie konstruktora dla klasy. Dzieje się tak dlatego, że kompilator Java tworzy domyślny konstruktor, jeśli twoja klasa go nie ma.

Zasady tworzenia konstruktora Java

Dla konstruktora zdefiniowano dwie reguły.

alya manasa
  1. Nazwa konstruktora musi być taka sama jak nazwa jego klasy
  2. Konstruktor nie może mieć jawnego typu zwracanego
  3. Konstruktor Java nie może być abstrakcyjny, statyczny, końcowy i zsynchronizowany

Uwaga: możemy użyć modyfikatory dostępu podczas deklarowania konstruktora. Kontroluje tworzenie obiektów. Innymi słowy, w Javie możemy mieć konstruktora prywatnego, chronionego, publicznego lub domyślnego.

Rodzaje konstruktorów Java

W Javie istnieją dwa typy konstruktorów:

  1. Konstruktor domyślny (konstruktor bez argumentu)
  2. Konstruktor parametryczny
Konstruktorzy Java

Domyślny konstruktor Java

Konstruktor nazywany jest „konstruktorem domyślnym”, jeśli nie ma żadnego parametru.

Składnia domyślnego konstruktora:

 (){} 

Przykład domyślnego konstruktora

W tym przykładzie tworzymy konstruktor no-arg w klasie Bike. Zostanie wywołany w momencie tworzenia obiektu.
 //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(); } } 
Przetestuj teraz

Wyjście:

 Bike is created 

Reguła: Jeśli w klasie nie ma konstruktora, kompilator automatycznie tworzy konstruktor domyślny.

Domyślny konstruktor Java

P) Jaki jest cel domyślnego konstruktora?

Konstruktor domyślny służy do zapewnienia domyślnych wartości obiektu, takich jak 0, null itp., w zależności od typu.

Przykład domyślnego konstruktora wyświetlającego wartości domyślne

 //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(); } } 
Przetestuj teraz

Wyjście:

 0 null 0 null 

Wyjaśnienie: W powyższej klasie nie tworzysz żadnego konstruktora, więc kompilator udostępnia konstruktor domyślny. Tutaj wartości 0 i null są dostarczane przez konstruktora domyślnego.


Konstruktor parametryczny Java

Konstruktor, który ma określoną liczbę parametrów, nazywany jest konstruktorem sparametryzowanym.

Po co używać sparametryzowanego konstruktora?

Konstruktor sparametryzowany służy do dostarczania różnych wartości różnym obiektom. Można jednak podać te same wartości.

Przykład sparametryzowanego konstruktora

W tym przykładzie utworzyliśmy konstruktor klasy Student, który ma dwa parametry. W konstruktorze możemy mieć dowolną liczbę parametrów.

 //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(); } } 
Przetestuj teraz

Wyjście:

 111 Karan 222 Aryan 

Przeciążanie konstruktora w Javie

W Javie konstruktor przypomina metodę, ale nie zawiera typu zwracanego. Może być również przeciążony, podobnie jak metody Java.

Konstruktor przeciążenie w Javie to technika posiadania więcej niż jednego konstruktora z różnymi listami parametrów. Są one ułożone w taki sposób, że każdy konstruktor wykonuje inne zadanie. Kompilator rozróżnia je na podstawie liczby parametrów na liście i ich typów.

Przykład przeciążenia konstruktora

 //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(); } } 
Przetestuj teraz

Wyjście:

 111 Karan 0 222 Aryan 25 

Różnica między konstruktorem a metodą w Javie

Istnieje wiele różnic pomiędzy konstruktorami i metodami. Poniżej podano je.

Konstruktor JavaMetoda Java
Konstruktor służy do inicjowania stanu obiektu.Do ujawnienia zachowania obiektu używana jest metoda.
Konstruktor nie może mieć typu zwracanego.Metoda musi mieć typ zwracany.
Konstruktor jest wywoływany niejawnie.Metoda jest wywoływana jawnie.
Kompilator Java udostępnia konstruktor domyślny, jeśli nie masz żadnego konstruktora w klasie.Kompilator w żadnym przypadku nie udostępnia tej metody.
Nazwa konstruktora musi być taka sama jak nazwa klasy.Nazwa metody może, ale nie musi, być taka sama jak nazwa klasy.

Konstruktory Java a metody

Konstruktor kopiujący Java

W Javie nie ma konstruktora kopiującego. Możemy jednak kopiować wartości z jednego obiektu do drugiego, jak konstruktor kopiujący w C++.

Istnieje wiele sposobów kopiowania wartości jednego obiektu do drugiego w Javie. Oni są:

  • Przez konstruktora
  • Poprzez przypisanie wartości jednego obiektu do drugiego
  • Za pomocą metody clone() klasy Object

W tym przykładzie skopiujemy wartości jednego obiektu do drugiego za pomocą konstruktora 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(); } } 
Przetestuj teraz

Wyjście:

 111 Karan 111 Karan 

Kopiowanie wartości bez konstruktora

Możemy skopiować wartości jednego obiektu do drugiego, przypisując wartości obiektów do innego obiektu. W takim przypadku nie ma potrzeby tworzenia konstruktora.

 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(); } } 
Przetestuj teraz

Wyjście:

 111 Karan 111 Karan 

P) Czy konstruktor zwraca jakąkolwiek wartość?

Tak, jest to bieżąca instancja klasy (nie możesz użyć typu zwracanego, ale zwraca on wartość).


Czy konstruktor może wykonać inne zadania zamiast inicjalizacji?

Tak, jak utworzenie obiektu, uruchomienie wątku, wywołanie metody itp. Możesz wykonać dowolną operację w konstruktorze, tak samo jak w metodzie.


Czy w Javie istnieje klasa Konstruktor?

Tak.

odczyt pliku csv w Javie

Jaki jest cel klasy Konstruktor?

Java udostępnia klasę Constructor, której można użyć do uzyskania wewnętrznych informacji o konstruktorze w klasie. Znajduje się w pakiecie java.lang.reflect.