W Javie konstruktor to blok kodu podobny do metody. Jest wywoływana podczas tworzenia instancji klasy. W momencie wywołania konstruktora pamięć dla obiektu jest alokowana w pamięci.
Jest to specjalny typ metody, który jest używany do inicjalizacji obiektu.
Za każdym razem, gdy obiekt jest tworzony przy użyciu słowa kluczowego new (), wywoływany jest przynajmniej jeden konstruktor.
Wywołuje domyślny konstruktor, jeśli w klasie nie ma dostępnego konstruktora. W takim przypadku kompilator Javy udostępnia domyślnie konstruktor domyślny.
W Javie istnieją dwa typy konstruktorów: konstruktor bezargumentowy i konstruktor z parametrami.
Uwaga: nosi nazwę konstruktor, ponieważ konstruuje wartości w momencie tworzenia obiektu. Nie jest konieczne pisanie konstruktora dla klasy. Dzieje się tak, ponieważ kompilator java tworzy domyślny konstruktor, jeśli Twoja klasa go nie ma.
Zasady tworzenia konstruktora Java
Istnieją dwie reguły zdefiniowane dla konstruktora.
- Nazwa konstruktora musi być taka sama jak nazwa jego klasy
- Konstruktor nie może mieć wyraźnego typu zwracanego
- Konstruktor Java nie może być abstrakcyjny, statyczny, końcowy i zsynchronizowany
Uwaga: możemy używać modyfikatorów dostępu podczas deklarowania konstruktora. Kontroluje on tworzenie obiektów. Innymi słowy, możemy mieć konstruktor prywatny, chroniony, publiczny lub domyślny w Javie.
Typy konstruktorów Javy
W Javie są dwa typy konstruktorów:
- Konstruktor domyślny (konstruktor bez argonu)
- Sparametryzowany konstruktor
Domyślny konstruktor języka Java
Konstruktor jest nazywany „domyślnym konstruktorem”, gdy nie ma żadnego parametr.
Składnia domyślnego konstruktora:
Przykład domyślnego konstruktora
W tym przykładzie tworzymy no- arg konstruktor w klasie Bike. Zostanie wywołany w momencie tworzenia obiektu.
Przetestuj teraz
Wynik:
Bike is created
Reguła: Jeśli w klasie nie ma konstruktora, kompilator automatycznie tworzy domyślny konstruktor.
P) Jaki jest cel domyślnego konstruktora?
Domyślny konstruktor służy do dostarczania wartości domyślnych do obiektu, takich jak 0, null, itp., w zależności od typu.
Przykład domyślnego konstruktora wyświetlającego wartości domyślne
Przetestuj teraz
Wynik:
0 null0 null
Wyjaśnienie: W powyższej klasie nie jesteś tworzenie dowolnego konstruktora, więc kompilator zapewnia domyślny konstruktor. Tutaj domyślny konstruktor podaje wartości 0 i null.
Sparametryzowany konstruktor języka Java
Konstruktor, który ma określoną liczbę parametrów, nazywany jest konstruktorem sparametryzowanym.
Po co używać sparametryzowanego konstruktora?
Sparametryzowany konstruktor służy do dostarczania różnych wartości różnym obiektom. Możesz 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.
Przetestuj teraz
Dane wyjściowe:
111 Karan222 Aryan
Przeciążanie konstruktora w Javie
W Javie konstruktor działa jak metoda, ale bez typu zwracanego. Może być również przeciążony, podobnie jak metody Java.
Przeciążanie konstruktorów w Javie to technika polegająca na posiadaniu więcej niż jednego konstruktora z różnymi listami parametrów. Są ułożone w taki sposób, że każdy konstruktor wykonuje inne zadanie. Są one rozróżniane przez kompilator według liczby parametrów na liście i ich typów.
Przykład przeciążania konstruktora
Przetestuj teraz
Wynik:
111 Karan 0222 Aryan 25
Różnica między konstruktorem a metodą w Javie
Istnieje wiele różnic między konstruktorami i metodami. Są one podane poniżej.
Konstruktor języka Java | Metoda Java |
---|---|
Konstruktor jest używany do inicjalizacji stanu obiektu. | Metoda służy do ujawnienia zachowania obiektu. |
Konstruktor musi nie ma zwracanego typu. | Metoda musi mieć zwracany typ. |
Konstruktor jest wywoływany niejawnie. | Metoda jest wywoływana jawnie. |
Kompilator Java udostępnia domyślny konstruktor, jeśli nie masz żadnego konstruktora w klasie. | Metoda nie jest udostępniana przez kompilator w każdym przypadku. |
Nazwa konstruktora musi być taka sama jak nazwa klasy. | Nazwa metody może, ale nie musi być taka sama jak nazwa klasy name. |
Java Copy Constructor
W Javie nie ma konstruktora kopiującego.Możemy jednak kopiować wartości z jednego obiektu do drugiego, tak jak konstruktor kopiujący w C ++.
Istnieje wiele sposobów kopiowania wartości jednego obiektu do drugiego w Javie. Są to:
- Według konstruktora
- Poprzez przypisanie wartości jednego obiektu do innego
- Metodą clone () klasy Object
W tym przykładzie zamierzamy skopiować wartości jednego obiektu do drugiego za pomocą konstruktora Java.
Przetestuj teraz
Wynik:
111 Karan111 Karan
Kopiowanie wartości bez konstruktora
Możemy skopiować wartości z jednego obiektu do drugiego, przypisując wartości obiektów do innego obiekt. W tym przypadku nie ma potrzeby tworzenia konstruktora.
Przetestuj teraz
Wynik:
111 Karan111 Karan
P) Czy konstruktor zwraca jakąś wartość?
Tak, jest to bieżąca instancja klasy (nie możesz użyć typu zwracanego, ale zwraca on wartość).
Czy konstruktor może wykonywać inne zadania zamiast inicjalizacji?
Tak, na przykład tworzenie obiektów, uruchamianie wątku, wywoływanie metody itp. Możesz wykonać dowolną operację w konstruktorze, tak jak wykonujesz w metodzie.
Czy w Javie jest klasa Constructor?
Tak.
Jaki jest cel klasy Constructor?
Java udostępnia klasę Constructor, która może służy do pobierania wewnętrznych informacji o konstruktorze w klasie. Znajduje się w pakiecie java.lang.reflect.