Java: statik yöntemler ne zaman kullanılır?


911

Statik yöntemleri ne zaman kullanacağımı merak ediyorum? Birkaç getters ve setters, bir yöntem veya iki ile bir sınıf varsa ve bu yöntemlerin yalnızca sınıfın bir örnek nesnesinde çağrılabilir olmasını istiyorum varsayalım. Bu statik bir yöntem kullanmam gerektiği anlamına mı geliyor?

Örneğin

Obj x = new Obj();
x.someMethod

veya

Obj.someMethod

(bu statik bir yol mu?)

Kafam karıştı!

Yanıtlar:


1458

Pratik bir kural: kendinize "Henüz herhangi bir nesne oluşturulmamış olsa bile bu yöntemi çağırmak anlamlı mı?" Eğer öyleyse, kesinlikle statik olmalıdır.

Yani bir sınıfta Carbir yönteminiz olabilir:

double convertMpgToKpl(double mpg)

... bu statik olurdu, çünkü kimse 35mpg'nin neye dönüştüğünü bilmek isteyebilir, hiç kimse bir tane inşa etmese bile Car. Ancak bu yöntem (belirli bir etkinliğin verimliliğini ayarlar Car):

void setMileage(double mpg)

... herhangi bir Carinşa edilmeden önce yöntemi çağırmak akıl almaz olduğu için statik olamaz .

(Bu arada, tersi her zaman doğru değildir: bazen iki Carnesne içeren bir yönteminiz olabilir ve yine de statik olmasını isteyebilirsiniz.

Car theMoreEfficientOf( Car c1, Car c2 )

Bu, statik olmayan bir sürüme dönüştürülebilse de, bazıları Cardaha önemli olan "ayrıcalıklı" bir seçim olmadığından, çağıranı, Carçağıracağınız nesne olarak birini seçmeye zorlamamanız gerektiğini iddia eder . yöntem. Bu durum, tüm statik yöntemlerin oldukça küçük bir kısmını oluşturuyor.)


325
Burada birkaç iyi örnek. Bununla birlikte, bir şeyin örneklerde değişmeyeceğini bildiğinizde "statik" in genellikle değerli olduğunu da ekleyeceğim. Eğer durum buysa, bir sınıfın tek bir sorumluluğu ve dolayısıyla değişmek için sadece bir nedeni olması gerektiği anlamına gelen "Tek Sorumluluk İlkesi" ni gerçekten düşünürdüm. Ben kendi sınıfına "ConvertMpgToKpl (çift mpg)" işlevini ve benzer yöntemleri hareket düşünmelisiniz hissediyorum. Bir araba nesnesinin amacı, arabanın karşılaştırılmasına izin vermemek, arabaların somutlaştırılmasına izin vermektir. Bunlar sınıfa harici olmalıdır.
Zack Jannsen

34
Bence yöntemi tercih ederim Car#isMoreEfficientThan(Car). Bir kravatta hangi arabayı döndürdüğünüzün keyfi olmaması avantajına sahiptir. Bir kravatta döndürülen yöntemin başlığı ile açıktır.
Cruncher

5
Ben de bazı harici kaynak (dosya sistemi, veritabanı, vb) kullanarak statik bir yöntem oluşturma konusunda dikkatli olurdu statik bu tür tüketen yöntemleri test etmek için korkunç yapabilirsiniz. Ben şahsen statiği "fayda" alanında tutmaya çalışıyorum.
Seth

7
Aslında, Karşılaştırıcı olarak uygulanmalıdır .
Dogweather

3
@ B1KMusic Elbette. Demek istediğim, "hangi araba berabere iade edilir" demek "arabada aranan gerçek haritalar ve geçen arabaya yanlış haritalar" dır. Belirsizlik yok.
Cruncher

538

Statik yöntemleri yalnızca aşağıdaki senaryolarda tanımlayın:

  1. Eğer yardımcı program sınıfları yazıyorsanız ve bunların değiştirilmemesi gerekiyorsa.
  2. Yöntem herhangi bir örnek değişkeni kullanmıyorsa.
  3. Herhangi bir işlem örnek oluşturmaya bağlı değilse.
  4. Tüm örnek yöntemleri tarafından kolayca paylaşılabilen bir kod varsa, bu kodu statik bir yönteme çıkarın.
  5. Yöntemin tanımının asla değiştirilmeyeceğinden veya geçersiz kılınmayacağından eminseniz. Statik yöntemler geçersiz kılınamaz.

45
iyi noktalar, ancak bir yöntemi statik yapmak istiyorsanız , gereksinimdir , bir yöntem yapmak için nedenler değil.
tetsuo

4
@Mohd gereksinimi 5: Bir yöntemin asla değiştirilmeyeceği veya geçersiz kılınmayacağından% 100 emin olabilirsiniz? Statik yönteminizi yazdığınız anda dikkate alamayacağınız bilinmeyen faktörler her zaman mevcut değil mi?
PixelPlex

8
"Fayda Sınıfları" nın akla gelmesi çok zordur, kötü olan şey er ya da geç her şeyin bir yardımcı program gibi görünmeye başlamasıdır (evet şişirilmiş, dokunulmaz ve kötü test edilmiş "util" paketine atıfta bulunuyorum), ve test durumlarınızın daha fazla çalışmaya ihtiyacı olacaktır (statik araçları takmak HARD'dir). Önce nesneleri tercih edin.
Sergio

2
@Mohd bu cevap tam olarak aradığım şey. Çoklu kullanımda statik yöntemler kullanarak birçok sorunla karşılaştım. Lütfen 2, 3 puanını daha ayrıntılı bir şekilde açıklar mısınız (örneğin sizin için 100 başparmak yukarıya)
Prakash Pandey

Statik değişkenler ve yöntemler kullanacaksanız bir "statik sınıf" icat edilmesi gerektiğini düşünüyorum.
Robert Rocha

182

Statik yöntemleri kullanmak için geçerli bazı nedenler vardır:

  • Performans : bazı kodların çalışmasını istiyorsanız ve bunu yapmak için fazladan bir nesne oluşturmak istemiyorsanız, statik bir yönteme sokun. JVM ayrıca statik yöntemleri çok fazla optimize edebilir (sanırım bir kez James Gosling'i JVM'de özel talimatlara ihtiyacınız olmadığını söyleyerek okudum, çünkü statik yöntemler aynı derecede hızlı olacak, ancak kaynağı bulamadık - böylece tamamen yanlış olabilir). Evet, mikro optimizasyon ve muhtemelen gereksiz. Ve biz programcılar asla sadece havalı oldukları için gereksiz şeyler yapmıyoruz, değil mi?

  • Pratiklik : çağrı yapmak new Util().method(arg), çağrı yapmak Util.method(arg)veya method(arg)statik içe aktarma yapmak yerine. Daha kolay, daha kısa.

  • Yöntem ekleme : sınıf String'inin bir removeSpecialChars()örnek yöntemine sahip olmasını gerçekten istediniz , ancak orada değil (ve projenizin özel karakterleri diğer projelerinkinden farklı olabileceğinden) olmamalı ve ekleyemezsiniz (Java biraz aklı başında), böylece bir yardımcı program sınıfı oluşturun ve removeSpecialChars(s)yerine çağırın s.removeSpecialChars(). Tatlı.

  • Saflık : bazı önlemler alarak, statik yönteminiz saf bir işlev olacaktır , yani, bağımlı olduğu tek şey parametreleridir. Veri girişi, veri çıkışı. Endişelenecek miras tuhaflıklarınız olmadığından, bu okunması ve hata ayıklaması daha kolaydır. Bunu örnek yöntemleri ile de yapabilirsiniz, ancak derleyici statik yöntemlerle (örnek özelliklerine referanslara izin vermeyerek, geçersiz kılma yöntemleri vb.) Size biraz daha yardımcı olacaktır.

Tek bir ton yapmak istiyorsanız statik bir yöntem oluşturmanız gerekir, ancak ... yapmayın. Yani, iki kere düşün.

Şimdi, daha da önemlisi, neden statik bir yöntem oluşturmak istemeyesiniz ? Temel olarak, polimorfizm pencereden dışarı çıkar . Yöntemi geçersiz kılamaz veya bir arabirimde bildiremezsiniz (Java 8 öncesi) . Tasarımınızdan çok fazla esneklik sağlar. Ayrıca, duruma ihtiyacınız varsa, dikkatli olmazsanız çok sayıda eşzamanlılık hatası ve / veya darboğazla karşılaşırsınız.


1
Statik ne zaman yararlı olabileceği konusunda burada listelenen birçok iyi neden. Düşünebileceğim bir şey daha, bu tür yöntemler için birim testleri yazmak sadece basit
nilesh

@tetsuo Teşekkürler! Açıklamanız çok açık ve verilen nedenler çok mantıklı ve çok mantıklı.
Deniss M.Mayıs

3
Ve biz programcılar asla sadece havalı oldukları için gereksiz şeyler yapmıyoruz, değil mi? +1
Scaramouche

Bu, statik bir yöntemin tam adlandırılmış bir işlev haline geldiğini söyledi stackoverflow.com/questions/155609/…
Ivanzinho

Performans ve Pratikliğe katılıyorum, ancak Saflık değil. Statik yöntem, sınıfın statik üyelerini değiştirebilir (bu özel olabilir). Bu yararlı olabilir. Örneğin, "statik senkronize int tahsis kimliği () {return idNext ++;}" gibi bir yönteminiz olabilir. Aslında, statik bir yöntem, yan etkiler açısından statik olmayan bir yöntem kadar saf veya saf olmayan olabilir.
Adam Gawne-Cain

42

Misko'nun makalelerini okuduktan sonra statik yöntemlerin test açısından kötü olduğuna inanıyorum . Bunun yerine fabrikalarınız olmalıdır (belki de Guice gibi bir bağımlılık enjeksiyon aracı kullanarak ).

sadece bir şeyden birine sahip olmamı nasıl sağlarım

sadece bir şey var “Bir şeyden sadece bir tanesine sahip olmamı nasıl sağlarım” sorunu güzelce kaldırılmıştır. Ana alanınızda yalnızca tek bir ApplicationFactory başlatırsınız ve sonuç olarak, tüm tek tonlarınızın yalnızca tek bir örneğini başlatırsınız.

Statik yöntemlerle ilgili temel sorun, prosedürel kod olmasıdır

Statik yöntemlerle ilgili temel sorun, prosedürel kod olmasıdır. Prosedür kodunun nasıl test edileceği hakkında hiçbir fikrim yok. Birim testi, uygulamamın bir parçasını tek başına başlatabileceğimi varsayar. Örnekleme sırasında bağımlılıkları gerçek bağımlılıkların yerini alan alaylarla / dostluklarla bağlarım. Prosedürel programlamada, hiçbir nesne olmadığından, kod ve veriler ayrı olduğundan "kablolama" için hiçbir şey yoktur.


20
Prosedür kodunu birim olarak test edememe konusunu anlamıyorum. Sınıfla birlikte "birim" olarak kullandığınız statik yöntemi kullanarak doğru girdiyi doğru çıktıya eşleyen test senaryoları kurmuyor musunuz?
tjb

2
Bu işlevleri test etmek için bunu yapabilirsiniz. Ancak bu statik yöntemleri test etmek istediğiniz diğer sınıflarda kullanırken, onları sahte (sahte / dost) veya başka bir şeyle yapamayacağınıza inanıyorum, çünkü bir sınıfı başlatamazsınız.
Alfred

4
@Alfred: Lütfen statik yöntemleri alay edebilen PowerMock'a bir göz atın . PowerMock'u kullanarak, alay edilemeyecek yöntem bağımlılıklarını bulduğunuz birkaç senaryo vardır.
Carles Sala

7
PowerMock'u kullanarak test istatistiklerini bir araya getirebilirsiniz, ancak yakında Permgen alanınız bittiğini (bunu yaptınız, tişört aldınız) ve hala kötü olduğunu göreceksiniz. Bilmediğiniz sürece (gerçek OO dillerinde kendi deneyiminizin en az on yılına dayanarak, C'den göç etmiyorsanız), YAPMAYIN. Cidden, şimdiye kadar gördüğüm en kötü kod, gömülü bir geliştiricinin statik kullanımından geldi ve çoğu durumda sonsuza kadar sıkıştık ve daha fazla kod eklemek bizi değiştirilemeyen monolite daha da sıkıca kilitledi. Gevşek kaplin: hayır, test edilebilir: zar zor, değiştirilebilir: ASLA. Önlemek!
user1016765

14
Statik duruma bağlı statik yöntemleri test etmenin zorluğunu anlayabiliyorum. Ama test yaparken vatansız gibi statik yöntemleri Math.abs()veya Arrays.sort()hatta yöntemlerle yapabilirsiniz içine tüm bağımlılıkları geçmesi , nasıl kabul edeceğini hiç engellemekten birim test görmüyorum. Basit bir kural olduğunu söyleyebilirim: prosedürel mantığı taklit etmek için herhangi bir nedeniniz varsa, statik bir yönteme koymayın. Ben dışarı alay için bir neden olmadı Arrays.sort()ya Math.abs().
Andy

36

Bir staticyöntem çağrılacak için herhangi bir nesne gerek yoktur yöntemin bir türü başlatılmasını etmektir. Java fonksiyonunda statickullanıldığını fark ettiniz mainmi? Program yürütme oradan bir nesne oluşturulmadan başlar.

Aşağıdaki örneği düşünün:

 class Languages 
 {
     public static void main(String[] args) 
     {
         display();
     }

     static void display() 
     {
         System.out.println("Java is my favorite programming language.");
     }
  }

aslında en iyi cevap
Yahya

20

Java'daki statik yöntemler sınıfa aittir (bunun bir örneği değildir). Hiçbir örnek değişkeni kullanmazlar ve genellikle parametrelerden girdi alırlar, üzerinde eylemler yaparlar, sonra bir sonuç döndürürler. Örnek yöntemleri nesnelerle ilişkilendirilir ve adından da anlaşılacağı gibi örnek değişkenleri kullanabilir.


12

Hayır, statik yöntemler bir örnekle ilişkilendirilmez; onlar sınıfa aittir. Statik yöntemler ikinci örneğinizdir; örnek yöntemler ilk yöntemdir.


1
Nesnenin durum manipülasyonlarına ihtiyacınız yoksa statik yöntemler kullanmalısınız.
MastAvalons

11

Herhangi bir yöntemle statik anahtar kelime uygularsanız, statik yöntem olarak bilinir.

  1. Statik bir yöntem, bir sınıfın nesnesi yerine sınıfa aittir.
  2. Sınıf örneği oluşturmaya gerek kalmadan çağrılan statik bir yöntem.
  3. statik yöntem statik veri üyesine erişebilir ve değerini değiştirebilir.
  4. Statik bir yönteme yalnızca bir sınıf nokta statik adının adı kullanılarak erişilebilir. . . örnek: Student9.change ();
  5. Bir sınıfın statik olmayan alanlarını kullanmak istiyorsanız, statik olmayan bir yöntem kullanmanız gerekir.

// Tüm nesnelerin ortak özelliğini değiştirme programı (statik alan).

class Student9{  
 int rollno;  
 String name;  
 static String college = "ITS";  

 static void change(){  
 college = "BBDIT";  
 }  

 Student9(int r, String n){  
 rollno = r;  
 name = n;  
 }  

 void display (){System.out.println(rollno+" "+name+" "+college);}  

public static void main(String args[]){  
Student9.change();  

Student9 s1 = new Student9 (111,"Indian");  
Student9 s2 = new Student9 (222,"American");  
Student9 s3 = new Student9 (333,"China");  

s1.display();  
s2.display();  
s3.display();  
}  }

O / P: 111 Hint BBDIT 222 Amerikan BBDIT 333 Çin BBDIT


10

Statik yöntemler bir örnekle ilişkilendirilmez, bu nedenle sınıftaki statik olmayan alanlara erişemezler.

Yöntem bir sınıfın herhangi bir alanını (veya yalnızca statik alanlarını) kullanmıyorsa, statik bir yöntem kullanırsınız.

Bir sınıfın statik olmayan alanları kullanılıyorsa, statik olmayan bir yöntem kullanmalısınız.


1
Açık, kısa ve basit bir cevap.
Josi

8

Sınıfta statik yöntemler, Sınıf örnekleri üzerinde örnek yöntemleri çağrılmalıdır. Ama bu gerçekte ne anlama geliyor? İşte yararlı bir örnek:

Bir araba sınıfının Accelerate () adında bir örnek yöntemi olabilir. Bir aracı ancak araba gerçekten mevcutsa (inşa edilmişse) hızlandırabilirsiniz ve bu nedenle bu bir örnek yöntem olacaktır.

Bir araba sınıfında GetCarCount () adında bir sayma yöntemi de olabilir. Bu, yaratılan (veya üretilen) toplam araba sayısını döndürür. Eğer hiçbir otomobil yapılmadıysa, bu yöntem 0 döndürür, ancak yine de çağrılabilmelidir ve bu nedenle statik bir yöntem olmalıdır.


6

Aslında, bir sınıfta statik özellikler ve yöntemler kullanıyoruz, programımızın bir kısmını kullanmak istediğimizde programımız çalışana kadar orada bulunmalıdır. Ve statik özellikleri manipüle etmek için örnek değişkeninin bir parçası olmadıklarından statik yöntemlere ihtiyacımız olduğunu biliyoruz. Ve statik yöntemler olmadan, statik özellikleri manipüle etmek zaman alıcıdır.


Statik değişkenlerde durumu korumak, birçok nedenden ötürü yapmak için kötü bir şeydir - çoklu iş parçacığı güvenliği, hata ayıklama, veri kapsülleme..etc vb. Statik yöntemler, saf işlevler ise sorun değildir (yalnızca parametrelerle çalışın, değiştirmeden). Örneğin matematik hesaplamaları için iyi bir örnek yararlı olabilir.
Vladimir Demirev

5

Sınıf örneği olmadan yönteme erişmek istediğinizde statik bir yöntem kullanın.


29
Bu, bir programın tasarımı için herhangi bir gerekçe oluşturmaz.
adamjmarkham

4

Statik: Obj.someMethod

Kullanın staticEğer yöntem sınıfının bir örneği olmadan çağrılabilir olması gereken bir yöntem, yani sınıf düzeyinde erişim sağlamak istediğinizde.


4

Statik yöntemlerin nesneye çağrılması gerekmez ve bu nesneyi kullanırsınız. Örnek: Main () yönteminiz statiktir ve onu çağırmak için bir nesne oluşturmazsınız.


1
Yaşasın! Java noobie sorularını incelerken nereye geldiğime bir bakın! Küçük bir dünya :-)
Deepak

1
@Deepak small world really :)
Vaishak Suresh

4

Statik yöntemler ve değişkenler, Java'daki 'Global' işlevlerin ve değişkenlerin kontrollü sürümüdür. Hangi yöntem olarak erişilebilir classname.methodName()veya classInstanceName.methodName()örneğin, statik yöntemler ve değişkenler de sınıfının örnekleri olarak sınıf adı kullanılarak erişilebilir.

Sınıf statik olarak ilan edilemez (çünkü bir anlam ifade etmiyorsa, bir sınıf herkese açık olarak bildirilirse, herhangi bir yerden erişilebilir), iç sınıflar statik olarak bildirilebilir.


3

Statik yöntemler aşağıdaki durumlarda kullanılabilir

  • Kişi bir örnek üzerinde eylem gerçekleştirmek istemez (yardımcı yöntem yöntemleri)

    Bu yazıda yukarıdaki cevapların birkaçında belirtildiği gibi, milleri kilometreye dönüştürmek veya Fahrenheit'ten Santigrat'a sıcaklık hesaplamak veya bunun tersi. Statik yöntem kullanan bu örneklerle, yepyeni bir nesneyi yığın belleğinde başlatmaya gerek yoktur. Aşağıyı düşünün

    1. new ABCClass(double farenheit).convertFarenheitToCelcium() 
    2. ABCClass.convertFarenheitToCelcium(double farenheit)

    birincisi, çağrılan her yöntem, Performans, Pratik için yeni bir sınıf ayak izi oluşturur . Aşağıda Math ve Apache-Commons kütüphanesi StringUtils sınıfı gösterilebilir:

    Math.random()
    Math.sqrt(double)
    Math.min(int, int)
    StringUtils.isEmpty(String)
    StringUtils.isBlank(String)
  • Kişi basit bir işlev olarak kullanmak ister. Girişler açıkça geçirilir ve sonuç verileri dönüş değeri olarak alınır. Miras, nesne örneklemesi resme gelmez. Özlü, Okunabilir .

NOT : Birkaç kişi statik yöntemlerin test edilebilirliğine karşıdır, ancak statik yöntemler de test edilebilir! JMockit ile statik yöntemler taklit edilebilir. Test edilebilirlik . Aşağıdaki örnek:

new MockUp<ClassName>() {
    @Mock
    public int doSomething(Input input1, Input input2){
        return returnValue;
    }
};

3

Statik yöntemler, Java'da bir sınıf nesnesi oluşturmadan çağrılabilen yöntemlerdir. Sınıfa aittir.

Örnek kullanarak yöntem çağrılmaya gerek olmadığında statik yöntem kullanıyoruz.


2

Statik yöntemleri ne zaman kullanacağımı merak ediyorum?

  1. staticYöntemler için yaygın bir kullanım staticalanı alanlara erişimdir .
  2. Ancak değişkenlere staticbaşvurmadan yöntemleriniz olabilir static. staticDeğişkene başvurmadan yardımcı yöntemler, java.lang.Math gibi bazı java sınıflarında bulunabilir.

    public static int min(int a, int b) {
        return (a <= b) ? a : b;
    }
  3. Diğer kullanım örneğinde, bu yöntemlerin yöntemle kombine edildiğini düşünebilirim, synchronizedçok düzeyli ortamda sınıf düzeyinde kilitlemenin uygulanmasıdır.

Birkaç getters ve setters, bir yöntem veya iki ile bir sınıf varsa ve bu yöntemlerin yalnızca sınıfın bir örnek nesnesinde çağrılabilir olmasını istiyorum varsayalım. Bu statik bir yöntem kullanmam gerektiği anlamına mı geliyor?

Sınıfın bir örnek nesnesindeki yönteme erişmeniz gerekiyorsa, yönteminizin statik olmaması gerekir.

Oracle dokümantasyon sayfası daha fazla ayrıntı sağlar.

Tüm örnek ve sınıf değişkenleri ve yöntemlerinin birleşimlerine izin verilmez:

  1. Örnek yöntemleri, örnek değişkenlerine ve örnek yöntemlerine doğrudan erişebilir.
  2. Örnek yöntemleri sınıf değişkenlerine ve sınıf yöntemlerine doğrudan erişebilir.
  3. Sınıf yöntemleri, sınıf değişkenlerine ve sınıf yöntemlerine doğrudan erişebilir.
  4. Sınıf yöntemleri, örnek değişkenlerine veya örnek yöntemlerine doğrudan erişemez; bir nesne başvurusu kullanmaları gerekir. Ayrıca, sınıf yöntemleri bu anahtar sözcüğü kullanamaz.

Statik alanlara normal yöntemlerle erişemiyor muyuz? O zaman bu A common use for static methods is to access static fields.bir tartışma değil.
parsecer

2

Statik bir yöntemin iki ana amacı vardır:

  1. Nesne durumu gerektirmeyen yardımcı veya yardımcı yöntemler için. Örnek değişkenlerine erişmeye gerek olmadığından, statik yöntemlere sahip olmak, arayanın nesneyi yalnızca yöntemi çağırmak için somutlaştırması gereğini ortadan kaldırır.
  2. Sayaç gibi sınıfın tüm örnekleri tarafından paylaşılan durum için. Tüm örneklerin aynı durumu paylaşması gerekir. Yalnızca bu durumu kullanan yöntemler de statik olmalıdır.

1

Tutulmada potansiyel statik yöntemleri tespit etmenize yardımcı olan bir uyarıyı etkinleştirebilirsiniz. (Vurgulanan çizginin üstünde vurgulamayı unuttuğum başka bir satır var)

tutulma ayarı


0

Kodunuzdaki bir yöntemi çağırmak için bir nesne oluşturmak istemediğinizde, yalnızca bu yöntemi statik olarak bildirin. Statik yöntemin çağrılması için bir örneğe ihtiyaç duymadığından, ancak burada yakalama tüm statik yöntemlerin otomatik olarak JVM tarafından çağrılmadığından. Bu ayrıcalığa sadece java'daki main () "public static void main [String ... args]" yöntemi ile ulaşılır, çünkü Runtime'da JVM tarafından giriş noktası olarak aranan Signature public "static" void main [] yöntemi kodun yürütülmesini başlat.

Misal:

public class Demo
{
   public static void main(String... args) 
   {
      Demo d = new Demo();

      System.out.println("This static method is executed by JVM");

     //Now to call the static method Displ() you can use the below methods:
           Displ(); //By method name itself    
      Demo.Displ(); //By using class name//Recommended
         d.Displ(); //By using instance //Not recommended
   }

   public static void Displ()
   {
      System.out.println("This static method needs to be called explicitly");
   }
} 

Çıktı: - Bu statik yöntem JVM tarafından yürütülür Bu statik yöntemin açıkça çağrılması gerekir Bu statik yöntemin açıkça çağrılması gerekir Bu statik yöntemin açıkça çağrılması gerekir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.