logo

Java statiskais konstruktors

Java valodā konstruktors nedrīkst būt abstrakts, galīgs, statisks, vietējais vai strictfp. Tātad nav nekādas statikas konstruktors Java valodā .

Statiskais konstruktors, ko izmanto statisku datu inicializācijai, nozīmē, ka norādītais uzdevums tiks izpildīts tikai vienu reizi visā programmā. Parasti statiskais konstruktors tiek automātiski izsaukts, kad tiek ģenerēta pirmā instance vai atsauce uz jebkuru statisku elementu. Statiskais konstruktors ir skaidri deklarēts, izmantojot statisku atslēgvārdu. Tomēr statiskais konstruktors Java nav atļauts.

Šarvananda

Dažas galvenās statiskā konstruktora funkcijas ir šādas:

  • Tam nebūs nepieciešami parametri vai piekļuves modifikatori.
  • Konkrētai klasei var būt tikai viens statiskais konstruktors.
  • Tas nepieļauj mantošanu vai pārslodzi.
  • Tas tiek izsaukts automātiski, to nevar izsaukt tieši vai skaidri.
  • Ja statisko lauku vērtība nav inicializēta, tā tiks inicializēta uz noklusējuma vērtībām.

Sapratīsim, kāpēc Java nav atļauts izmantot statisko konstruktoru:

Ko darīt, ja mēs pasludinām statisku konstruktoru?

Statisks konstruktors nav ielaists Java programmēšana . Statiskā konstruktora izmantošana ir nelikumīga un pretrunā Java standartiem. Tātad Java programma netiks kompilēta un radīs kompilēšanas laika kļūdu.

multipleksēšana

Sapratīsim to ar piemēru. Apsveriet tālāk sniegto piemēru:

StaticConstructorDemo.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(); } } 

Izvade:

 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) 

No iepriekš minētā piemēra mēs redzam, ka tas rada izņēmumu. Nelikumīgs konstruktora tipa modifikators '. Un tas ir skaidri rakstīts publiska, aizsargāta , & Privāts ir atļauti.

Kāpēc Java neatbalsta statisko konstruktoru?

Ja kaut ko atzīmējam ar statisku atslēgvārdu, tas pieder tikai klasei, piemēram, statiskā metode, statiskais mainīgais utt. Statiskās metodes nevar mantot no to apakšklasēm, jo ​​tās pieder klasei, kurā tās ir deklarētas. Tāpat mēs nevaram izmantot statisku mainīgo tā apakšklasēs.

java norobežotājs

Konstruktora gadījumā konstruktors ir atkārtoti lietojams koda bloks, kas nozīmē, ka objektu izveides laikā mēs to varam izsaukt no tā apakšklasēm. Bet, ja mēs to deklarējam kā statisku, to nevar izmantot tās apakšklases, izņemot deklarējošās klases. Tātad ir nelikumīgi atzīt konstruktoru par statisku. Tādējādi tas pārkāps visu mantojuma koncepcijas motīvu.

Ja mēs pasludinām konstruktoru kā statisku, tad tam nevar piekļūt tā apakšklases un tas piederēs tikai klases līmenim. Programma netiks kompilēta un radīs kompilēšanas laika kļūdu.

Sapratīsim to ar piemēru:

StaticConstructorExample.java:

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

StaticConstructorChild.java:

 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(); } } 

Izvade:

c
 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

No iepriekš minētā piemēra mēs varam pamanīt, ka, izveidojot bērnklases objektu, tas vispirms izsauc vecākklases konstruktoru, pēc tam savu klases konstruktoru. Tas notiek tāpēc, ka jaunais atslēgvārds izveido objektu, pēc tam izsauc konstruktoru vērtību inicializācijai. Katrai bērnu klasei ir super() konstruktors kā pirmais priekšraksts, kas pārmanto rekvizītus no vecākklases.

Tas ir iemesls, kāpēc mēs nevaram izveidot statisku konstruktoru Java.

Secinājums:

Java konstruktori nevar būt statiski, jo, ja konstruktori ir atzīmēti kā statiski, tos nevar izsaukt no bērnu klases; tādējādi bērnu klases objekts netiks izveidots. Programma netiks kompilēta un radīs kompilēšanas laika kļūdu.