logo

Zašto koristimo Constructor u Javi?

U ovom odjeljku naučit ćemo zašto koristimo konstruktor u Javi i koja je namjera i potreba konstruktora . Uz to ćemo vidjeti i vrste konstruktora.

U Javi, konstruktor slična je metodi. Svojstvo konstruktora je da mora imati isto ime kao ime klase. Nema povratnu vrstu. Ne zahtijevamo ručno pozivanje konstruktora. Automatski se implicitno poziva tijekom instanciranja.

skener skeniranje java

Drugim riječima, konstruktor je metoda koja se poziva u vrijeme izvođenja tijekom stvaranja objekta pomoću operatora new. JVM ga poziva automatski kada kreiramo objekt. Kada u klasi ne definiramo konstruktor, zadani konstruktor uvijek je nevidljivo prisutan u klasi. Postoje sljedeći razlozi za korištenje konstruktora:

  • Koristimo konstruktore za inicijalizaciju objekta sa zadanim ili početnim stanjem. Zadane vrijednosti za primitive možda nisu ono što tražite.
  • Drugi razlog za korištenje konstruktora je taj što obavještava o ovisnostima. Drugim riječima, korištenjem konstruktora možemo od korisnika te klase zatražiti potrebne ovisnosti.
  • Možemo saznati što mu je potrebno da bi koristio ovu klasu, samo gledajući konstruktor.

Ukratko, koristimo konstruktor za inicijalizirati varijablu instance klase.

Vrste konstruktora

U Javi postoje dvije vrste konstruktora:

  • Parametrizirani konstruktor
  • Zadani konstruktor

Parametrirani konstruktor

Kao što naziv sugerira, prihvaća argumente (parametre). Parametrizirani konstruktor koristi se ako želimo dinamički inicijalizirati varijable instance s navedenim vrijednostima u trenutku instanciranja.

Primjer

 public class Demo { int i; //parameterized constructor public demo(int i) { this.i = i; } } 

Zadani konstruktor

Zadani konstruktor ne prihvaća nijedan parametar. Koristi se ako želimo inicijalizirati varijable instance određenim vrijednostima. Svaka Java klasa ima zadani konstruktor, nevidljiv. Dakle, ne moramo ga posebno definirati. Upamtite da se zadani konstruktor uklanja iz klase kada kreiramo parametrizirani konstruktor.

Primjer

 public class Demo { int i; //default constructor public demo() { //the value of i is fixed this.i = 100; } } 

Napomena: Kada ne damo nikakav konstruktor Java programu, Java prevodilac piše zadani konstruktor u ime programera i kompajlira program. Inicijalizira varijable instance sa zadanim vrijednostima. Na primjer, 0 za cijeli broj, 0,0 za float i null za niz.

Kreirajmo program i koristimo zadani i parametrizirani konstruktor.

U klasi Employee stvorili smo dva konstruktora, jedan je zadani konstruktor, a drugi je parametrizirani konstruktor. Klasa zaposlenika ima dvije privatne varijable, ime i dob. U glavnoj metodi instancirali smo klasu i koristili oba konstruktora.

konačna ključna riječ u Javi

Zaposlenik.java

 import java.util.Scanner; public class Employee { private String name; private int age; //parameterized constructor public Employee(String name, int age) { this.name =name; this.age = age; } //Default constructor public Employee() { this.name = 'William'; this.age = 28; } //method for printing the values public void show() { System.out.println('Name of the employee: '+this.name); System.out.println('Age of the employee: '+this.age); } //main method public static void main(String args[]) { Employee e=new Employee(); //Reading values from user Scanner sc = new Scanner(System.in); System.out.println('Enter the name of the employee: '); String name = sc.nextLine(); System.out.println('Enter the age of the employee: '); int age = sc.nextInt(); System.out.println(' '); //Calling the parameterized constructor System.out.println('Show() method for the parameterized constructor: '); new Employee(name, age).show(); //Calling the default constructor System.out.println('Show() method for the default constructor: '); new Employee().show(); } } 

Izlaz:

 Enter the name of the employee: David Enter the age of the employee: 27 Show() method for the parameterized constructor: Name of the employee: David Age of the employee: 27 Show() method for the default constructor: Name of the employee: William Age of the employee: 28