logo

Java Statik Oluşturucu

Java'da bir yapıcının soyut, nihai, statik, yerel veya katı fp olmasına izin verilmez. Yani statik bir durum yok Java'da yapıcı .

Statik verileri başlatmak için kullanılan statik kurucu, belirtilen görevin program boyunca yalnızca bir kez yürütüleceği anlamına gelir. Genellikle, ilk örnek oluşturulduğunda veya herhangi bir statik üyeye başvurulduğunda statik bir kurucu otomatik olarak çağrılır. Statik oluşturucu, statik bir anahtar sözcük kullanılarak açıkça bildirilir. Ancak Java'da statik kurucuya izin verilmez.

java dize kırpma

Statik yapıcının bazı temel özellikleri şunlardır:

  • Parametre veya erişim değiştiricileri almaz.
  • Belirli bir sınıfın yalnızca bir statik yapıcısı olabilir.
  • Mirasa veya aşırı yüklemeye izin vermez.
  • Otomatik olarak çağrılır, doğrudan veya açıkça çağrılamaz.
  • Statik alanların değeri başlatılmamışsa, varsayılan değerlerle başlatılacaktır.

Java'da statik kurucuya neden izin verilmediğini anlayalım:

Peki ya Statik Bir Yapıcı Bildirirsek?

Statik bir kurucuya izin verilmiyor Java programlama . Statik bir kurucu kullanmak yasa dışıdır ve Java standartlarına aykırıdır. Yani Java programı derlenmeyecek ve derleme zamanı hatası vermeyecektir.

Bir örnekle anlayalım. Aşağıdaki örneği göz önünde bulundurun:

StaticConstructorDemo.java:

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

Çıktı:

 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) 

Yukarıdaki örnekten, bunun bir istisna attığını görebiliriz' Yapıcı türü için geçersiz değiştirici '. Ve açıkça yazıyor ki kamuya açık, korunan , & özel izin verilmiş.

Java neden Statik Oluşturucuyu Desteklemiyor?

Herhangi bir şeyi statik anahtar kelimeyle işaretlediğimizde, bu yalnızca sınıfa aittir, örneğin statik yöntem, statik değişken vb. Statik yöntemler, bildirildikleri sınıfa ait oldukları için alt sınıflarından miras alınamazlar. Benzer şekilde statik bir değişkeni alt sınıflarında kullanamayız.

atoi c

Bir yapıcı söz konusu olduğunda, yapıcı yeniden kullanılabilen bir kod bloğudur, yani nesnelerin oluşturulması sırasında onu alt sınıflarından çağırabiliriz. Ancak static olarak deklare ettiğimizde, bildirimi yapan sınıflar dışındaki alt sınıfları tarafından kullanılamaz. Dolayısıyla bir kurucuyu statik olarak ilan etmek yasa dışıdır. Böylece miras kavramının bütünüyle ihlali söz konusu olacaktır.

Bir yapıcıyı statik olarak bildirirsek, ona alt sınıfları tarafından erişilemez ve yalnızca sınıf düzeyine ait olur. Program derlenmeyecek ve derleme zamanı hatası vermeyecektir.

Bir örnekle anlayalım:

StaticConstructorExample.java:

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

StaticConstructorChild.java:

Java'da liste oluşturma
 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(); } } 

Çıktı:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

Yukarıdaki örnekten, alt sınıf nesnesi oluşturulduğunda, önce ebeveyn sınıf yapıcısını, sonra da kendi sınıf yapıcısını çağırdığını fark edebiliriz. Bunun nedeni, new anahtar sözcüğünün nesneyi yaratması ve ardından değerleri başlatmak için yapıcıyı çağırmasıdır. Her alt sınıfın, özellikleri ana sınıftan devralan ilk ifade olarak bir super() yapıcısı vardır.

Java'da statik bir kurucu oluşturamamamızın nedeni budur.

Çözüm:

Java'daki yapıcılar statik olamaz çünkü yapıcılar statik olarak işaretlenmişse alt sınıftan çağrılamazlar; bu nedenle alt sınıfın nesnesi oluşturulmayacaktır. Program derlenmeyecek ve derleme zamanı hatası vermeyecektir.