V tem razdelku se bomo naučili zakaj uporabljamo konstruktor v Javi in kaj je namen in potreba konstruktorja . Ob tem bomo videli tudi vrste konstruktorja.
V Javi je konstruktor je podobna metodi. Lastnost konstruktorja je, da mora imeti isto ime kot ime razreda. Nima povratne vrste. Konstruktorja nam ni treba klicati ročno. Samodejno se implicitno prikliče med instanciacijo.
Z drugimi besedami, konstruktor je metoda, ki se kliče v času izvajanja med ustvarjanjem objekta z uporabo operatorja new. JVM ga samodejno pokliče, ko ustvarimo objekt. Kadar v razredu ne definiramo konstruktorja, je privzeti konstruktor vedno nevidno prisoten v razredu. Obstajajo naslednji razlogi za uporabo konstruktorjev:
- Za inicializacijo objekta s privzetim ali začetnim stanjem uporabljamo konstruktorje. Privzete vrednosti za primitive morda niso tisto, kar iščete.
- Drugi razlog za uporabo konstruktorja je, da obvešča o odvisnostih. Z drugimi besedami, z uporabo konstruktorja lahko od uporabnika tega razreda zahtevamo zahtevane odvisnosti.
- Če pogledamo konstruktor, lahko ugotovimo, kaj potrebuje za uporabo tega razreda.
Skratka, konstruktor uporabljamo za inicializirati spremenljivko primerka razreda.
Vrste konstruktorjev
V Javi obstajata dve vrsti konstruktorjev:
enojni oblikovalski vzorec java
- Parametriziran konstruktor
- Privzeti konstruktor
Parametriziran konstruktor
Kot že ime pove, sprejema argumente (parametre). Parametrizirani konstruktor uporabimo, če želimo dinamično inicializirati spremenljivke primerka s podanimi vrednostmi v času instanciranja.
Primer
public class Demo { int i; //parameterized constructor public demo(int i) { this.i = i; } }
Privzeti konstruktor
Privzeti konstruktor ne sprejme nobenega parametra. Uporablja se, če želimo inicializirati spremenljivke instance z določenimi vrednostmi. Vsak razred Java ima privzeti konstruktor, neviden. Torej nam ga ni treba posebej definirati. Ne pozabite, da je privzeti konstruktor odstranjen iz razreda, ko ustvarimo parametrizirani konstruktor.
Primer
public class Demo { int i; //default constructor public demo() { //the value of i is fixed this.i = 100; } }
Opomba: Če programu Java ne zagotovimo nobenega konstruktorja, prevajalnik Jave zapiše privzeti konstruktor v imenu programerja in prevede program. Inicializira spremenljivke primerka s privzetimi vrednostmi. Na primer, 0 za celo število, 0,0 za float in nič za niz.
Ustvarimo program in uporabimo privzeti in parametrirani konstruktor.
V razredu Employee smo ustvarili dva konstruktorja, eden je privzeti konstruktor, drugi pa parametrizirani konstruktor. Razred zaposlenih ima dve zasebni spremenljivki, in sicer ime in starost. V glavni metodi smo instancirali razred in uporabili oba konstruktorja.
zamenjaj niz v nizu java
Zaposleni.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(); } }
Izhod:
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