logo

Java statički konstruktor

U Javi konstruktor ne smije biti apstraktan, finalan, statički, izvorni ili strictfp. Dakle, nema statike konstruktor u Javi .

Statički konstruktor koji se koristi za inicijalizaciju statičkih podataka znači da će se navedeni zadatak izvršiti samo jednom u cijelom programu. Obično se statički konstruktor automatski poziva kada se generira prva instanca ili se referencira bilo koji statički član. Statički konstruktor se eksplicitno deklarira pomoću ključne riječi static. Međutim, statički konstruktor nije dopušten u Javi.

lista.sort java

Neke ključne značajke statičkog konstruktora su sljedeće:

  • Neće uzimati parametre niti modifikatore pristupa.
  • Određena klasa može imati samo jedan statički konstruktor.
  • Ne dopušta nasljeđivanje ili preopterećenje.
  • Poziva se automatski, ne može se pozvati izravno ili eksplicitno.
  • Ako vrijednost statičkih polja nije inicijalizirana, inicijalizirat će se na zadane vrijednosti.

Shvatimo zašto statički konstruktor nije dopušten u Javi:

Što ako deklariramo statički konstruktor?

Statički konstruktor nije dopušten Java programiranje . Ilegalno je i protivno Java standardima koristiti statički konstruktor. Dakle, Java program neće biti kompajliran i izbacit će pogrešku tijekom kompajliranja.

Shvatimo to na primjeru. Razmotrite primjer u nastavku:

StaticConstructorDemo.java:

char u cijeli broj java
 public class StaticConstructorDemo { //Declaring a static constructor public static StaticConstructorDemo() { System.out.println('Static Constructor of the class'); } public static void main(String args[]) { // Creating a constructor object to invoke it StaticConstructorDemo obj = new StaticConstructorDemo(); } } 

Izlaz:

 Exception in thread 'main' java.lang.Error: Unresolved compilation problem: Illegal modifier for the constructor in type StaticConstructorDemo; only public, protected & private are permitted. at StaticConstructorDemo.(StaticConstructorDemo.java:4) at StaticConstructorDemo.main(StaticConstructorDemo.java:13) 

Iz gornjeg primjera, možemo vidjeti, baca iznimku ' Ilegalni modifikator za tip konstruktora '. I to jasno piše javno, zaštićeno , & privatna su dopušteni.

Zašto Java ne podržava statički konstruktor?

Kada bilo što označimo ključnom riječi static, to pripada samo klasi, na primjer, statička metoda, statička varijabla itd. Statičke metode ne mogu se naslijediti od svojih podklasa jer pripadaju klasi u kojoj su deklarirane. Slično tome, ne možemo koristiti statičku varijablu u njenim potklasama.

kako otvoriti json datoteku

U slučaju konstruktora, konstruktor je blok koda koji se može ponovno koristiti, što znači da ga možemo pozvati iz njegovih podklasa tijekom stvaranja objekata. Ali, kada ga deklariramo kao statičkog, ne mogu ga koristiti njegove podklase osim klasa za deklariranje. Dakle, nezakonito je deklarirati konstruktor kao statički. Time će se narušiti cijeli motiv koncepta nasljeđivanja.

Ako konstruktor deklariramo kao statičan, tada mu njegove podklase ne mogu pristupiti i pripadat će samo razini klase. Program se neće prevesti i javit će se pogreška tijekom prevođenja.

Razumimo to na primjeru:

StaticConstructorExample.java:

 public class StaticConstructorExample { public StaticConstructorExample() { /*Constructor of this class*/ System.out.println('In StaticConstructorExample Class'); } } 

StaticConstructorChild.java:

cjelobrojna usporedba s Javom
 public class StaticConstructorChild extends StaticConstructorExample { public StaticConstructorChild() { System.out.println('In StaticConstructorChild class'); } public void display() { System.out.println('Method of StaticConstructorChild class'); } public static void main(String args[]) { StaticConstructorChild obj = new StaticConstructorChild(); obj.display(); } } 

Izlaz:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Iz gornjeg primjera možemo primijetiti da kada se kreira objekt podređene klase, prvo poziva konstruktor roditeljske klase, a zatim vlastiti konstruktor klase. To se događa jer nova ključna riječ stvara objekt, a zatim poziva konstruktor za inicijaliziranje vrijednosti. Svaka podređena klasa ima super() konstruktor kao prvu naredbu koja nasljeđuje svojstva roditeljske klase.

To je razlog zašto ne možemo stvoriti statički konstruktor u Javi.

Zaključak:

Konstruktori u Javi ne mogu biti statični jer ako su konstruktori označeni kao statični, ne mogu se pozvati iz klase djeteta; prema tome, objekt podređene klase neće biti kreiran. Program se neće prevesti i javit će se pogreška tijekom prevođenja.