logo

Konstruktorzy Java

Konstruktory Java lub konstruktory w Javie to terminologia używana do konstruowania czegoś w naszych programach. Konstruktor w Javie to: specjalna metoda który służy do inicjowania obiektów. Konstruktor jest wywoływany, gdy tworzony jest obiekt klasy. Można go użyć do ustawienia początkowych wartości atrybutów obiektu.

Czym są konstruktory w Javie?

W Javie Konstruktor to blok kodów podobny do metody. Jest wywoływana, gdy tworzona jest instancja klasy. 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.



Przykład konstruktora Java

Poniżej znajduje się implementacja konstruktorów Java:

Jawa
// Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks {    // Constructor  Geeks()  {  super();  System.out.println('Constructor Called');  }  // main function  public static void main(String[] args)  {  Geeks geek = new Geeks();  } }>

Wyjście
Constructor Called>

Notatka: Nie jest konieczne pisanie konstruktora dla klasy. Dzieje się tak dlatego, że kompilator Java tworzy domyślny konstruktor (konstruktor bez argumentów), jeśli Twoja klasa ich nie ma.

Czym konstruktory Java różnią się od metod Java?

  • Konstruktory muszą mieć taką samą nazwę jak klasa w której są zdefiniowane, nie jest to konieczne w przypadku metody w Javie.
  • Konstruktory nie zwracają żadnego typu, podczas gdy metody mają typ zwracany lub próżnia jeśli nie zwraca żadnej wartości.
  • Konstruktory są wywoływane tylko raz w momencie tworzenia obiektu, natomiast metody można wywoływać dowolną liczbę razy.

Przyjrzyjmy się teraz składni konstruktora wywoływanego w momencie tworzenia obiektu lub instancji.



class Geek {   .......  // A Constructor  Geek() {  }  ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>

Pierwszą linią konstruktora jest wywołanie super() lub this(), (wywołanie konstruktora nadklasy lub konstruktora przeciążonego), jeśli nie wpiszesz wywołania super w konstruktorze, kompilator zapewni nieargumentowe wywołanie super w pierwszej linii kodu, superkonstruktor musi zostać wywołany, aby utworzyć obiekt:

Jeśli uważasz, że Twoja klasa nie jest podklasą, to tak naprawdę jest, każda klasa w Javie jest podklasą klasy obiekt nawet jeśli w definicji klasy nie powiesz „rozszerza obiekt”.

Potrzeba konstruktorów w Javie

Pomyśl o pudełku. Jeśli mówimy o klasie pudełkowej, będzie ona miała pewne zmienne klasowe (powiedzmy długość, szerokość i wysokość). Ale jeśli chodzi o utworzenie jego obiektu (tj. Pudełko będzie teraz istnieć w pamięci komputera), to czy pudełko może tam istnieć bez określonej wartości jego wymiarów? Odpowiedź brzmi: N O .
Zatem konstruktory służą do przypisywania wartości zmiennym klasy w momencie tworzenia obiektu, albo bezpośrednio przez programistę, albo przez samą Javę (konstruktor domyślny).



głupia kropka

Kiedy wywoływany jest konstruktor Java?

Za każdym razem, gdy obiekt jest tworzony przy użyciu a nowy() słowem kluczowym, wywoływany jest co najmniej jeden konstruktor (może to być konstruktor domyślny) w celu przypisania wartości początkowych do członkowie danych z tej samej klasy. Zasady pisania konstruktorów są następujące:

  • Konstruktor(y) klasy musi mieć taką samą nazwę jak nazwa klasy, w której się ona znajduje.
  • Konstruktor w Javie nie może być abstrakcyjny, końcowy, statyczny ani zsynchronizowany.
  • Modyfikatorów dostępu można używać w deklaracji konstruktora w celu kontrolowania jego dostępu, tj. tego, która inna klasa może wywołać konstruktor.

Jak dotąd dowiedzieliśmy się, że konstruktory służą do inicjowania stanu obiektu. Tak jak metody , konstruktor zawiera również zbiór instrukcji (tj. instrukcji), które są wykonywane w momencie tworzenia obiektu.

Rodzaje konstruktorów w Javie

Teraz jest właściwy moment na omówienie typów konstruktorów, dlatego też w Javie istnieją trzy typy konstruktorów, które wymieniono poniżej:

  • Domyślny konstruktor
  • Konstruktor parametryczny
  • Kopiuj konstruktor

1. Domyślny konstruktor w Javie

Konstruktor, który nie ma parametrów, nazywany jest konstruktorem domyślnym. Konstruktor domyślny jest niewidoczny. A jeśli napiszemy konstruktor bez argumentów, kompilator nie utworzy konstruktora domyślnego. Jest wyjęty. Jest przeciążany i nazywany konstruktorem sparametryzowanym. Konstruktor domyślny został zmieniony na konstruktora sparametryzowanego. Ale konstruktor parametryczny nie może zmienić konstruktora domyślnego. Konstruktor domyślny może być niejawny lub jawny. Jeśli nie zdefiniujemy jawnie, otrzymamy ukryty konstruktor domyślny. Jeśli ręcznie napiszemy konstruktor, domyślny zostanie nadpisany.

Przykład:

Jawa
// Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG {  // Default Constructor  GFG() { System.out.println('Default constructor'); }  // Driver function  public static void main(String[] args)  {  GFG hello = new GFG();  } }>

Wyjście
Default constructor>

Notatka: Konstruktor domyślny zapewnia domyślne wartości obiektu, takie jak 0, null itp., w zależności od typu.

2. Konstruktor parametryczny w Javie

Konstruktor posiadający parametry nazywany jest konstruktorem sparametryzowanym. Jeżeli chcemy inicjować pola klasy własnymi wartościami, wówczas należy zastosować sparametryzowany konstruktor.

Przykład:

sortowanie tablicy Java
Jawa
// Java Program for Parameterized Constructor import java.io.*; class Geek {  // data members of the class.  String name;  int id;  Geek(String name, int id)  {  this.name = name;  this.id = id;  } } class GFG {  public static void main(String[] args)  {  // This would invoke the parameterized constructor.  Geek geek1 = new Geek('Avinash', 68);  System.out.println('GeekName :' + geek1.name  + ' and GeekId :' + geek1.id);  } }>

Wyjście
GeekName :Avinash and GeekId :68>

Pamiętaj: Czy konstruktor zwraca jakąś wartość?

W konstruktorze nie ma instrukcji wartości zwracanej, ale konstruktor zwraca bieżącą instancję klasy. Możemy napisać słowo „return” wewnątrz konstruktora.

Teraz najważniejszym tematem, który wchodzi w grę, jest silne włączenie OOPS do konstruktorów znanych jako przeciążenie konstruktora. Podobnie jak metody, możemy przeciążać konstruktory w celu tworzenia obiektów na różne sposoby. Kompilator rozróżnia konstruktory na podstawie liczby parametrów, typów parametrów i kolejności parametrów.

Przykład:

Jawa
// Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek {  // constructor with one argument  Geek(String name)  {  System.out.println('Constructor with one '  + 'argument - String : ' + name);  }  // constructor with two arguments  Geek(String name, int age)  {  System.out.println(  'Constructor with two arguments : '  + ' String and Integer : ' + name + ' ' + age);  }  // Constructor with one argument but with different  // type than previous..  Geek(long id)  {  System.out.println(  'Constructor with one argument : '  + 'Long : ' + id);  } } class GFG {  public static void main(String[] args)  {  // Creating the objects of the class named 'Geek'  // by passing different arguments  // Invoke the constructor with one argument of  // type 'String'.  Geek geek2 = new Geek('Shikhar');  // Invoke the constructor with two arguments  Geek geek3 = new Geek('Dharmesh', 26);  // Invoke the constructor with one argument of  // type 'Long'.  Geek geek4 = new Geek(325614567);  } }>

Wyjście
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>

3. Kopiuj konstruktor w Javie

W przeciwieństwie do innych konstruktorów konstruktor kopiujący jest przekazywany z innym obiektem, który kopiuje dostępne dane z przekazanego obiektu do nowo utworzonego obiektu.

kiedy wynaleziono szkołę

Notatka: W Javie nie ma wbudowanego konstruktora kopiującego, jak w innych językach programowania, takich jak C++, zamiast tego możemy stworzyć własny konstruktor kopiujący, przekazując obiekt tej samej klasy do innej instancji (obiektu) klasy.

Przykład:

Jawa
// Java Program for Copy Constructor import java.io.*; class Geek {  // data members of the class.  String name;  int id;  // Parameterized Constructor  Geek(String name, int id)  {  this.name = name;  this.id = id;  }  // Copy Constructor  Geek(Geek obj2)  {  this.name = obj2.name;  this.id = obj2.id;  } } class GFG {  public static void main(String[] args)  {  // This would invoke the parameterized constructor.  System.out.println('First Object');  Geek geek1 = new Geek('Avinash', 68);  System.out.println('GeekName :' + geek1.name  + ' and GeekId :' + geek1.id);  System.out.println();  // This would invoke the copy constructor.  Geek geek2 = new Geek(geek1);  System.out.println(  'Copy Constructor used Second Object');  System.out.println('GeekName :' + geek2.name  + ' and GeekId :' + geek2.id);  } }>

Wyjście
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Aby poznać bliżej konstruktorów, powszechnie stosuje się dwie koncepcje wymienione poniżej:

  • Łańcuch konstruktorów
  • Kopiuj konstruktor

Często zadawane pytania dotyczące konstruktorów Java

1. Czym jest konstruktor w Javie?

Konstruktor w Javie to: specjalna metoda używany do inicjowania obiektów.

2. Czy konstruktor Java może być prywatny?

Tak, konstruktor można zadeklarować jako prywatny. Do ograniczania tworzenia obiektów używany jest prywatny konstruktor.