Java'da static
Tag.java içinde ok yazdıran static void ping() biçiminde bir static metot içeren Tag sınıfını yazın. Yard.java içinde main'den Tag.ping(); çağırın ve bu sayfada new Tag() yazmayın. Her iki dosyayı derleyin ve java Yard çalıştırın. Ekran bir satır göstermelidir: ok. Metot bir nesne değişkenine değil, Tag sınıf adına aittir. Sınıf adı üzerinden çağırmak bu sayfanın öğrettiği şeydir.
Sınıf adındaki bir metot
Örnek metotlar sayfasında new Jar(3) sonrasında j.bump() yazıyordunuz. O çağrı bir nesneye ihtiyaç duyuyordu. static metot ihtiyaç duymaz. Sınıf adıyla Tag.ping(); yazarsınız. Java bu sayfada önce bir Tag nesnesi kurmadan o metodu çalıştırır.
Önce Tag.java oluşturun. Public class satırı public class Tag'dır. Burada eski bir Jar veya Tin sınıf adı bırakmayın. Süslü parantezlerin içinde bir metot yazın:
static void ping() { System.out.println("ok"); }
İlk demoda alan ve yapıcı yoktur. Tag.java içinde main yoktur. Derlemeden önce kaydedin. static sözcüğü metot başlığında void'den önce durur. static olmadan, Yard'dan sonraki bir Tag.ping(); çağrısı bu sayfanın istediği örnek-metot biçimiyle uyuşmaz.
public class Tag {
static void ping() {
System.out.println("ok");
}
}
Yard Tag.ping çağırır
Aynı klasörde Yard.java oluşturun. Public class satırı public class Yard'dır. main içinde bir çağrı yazın: Tag.ping();. Bu sayfada Tag t = new Tag(); yazmayın. Ders yolu olarak t.ping(); yazmayın. Noktadan önceki sınıf adı yeterlidir.
Yard'ı main'i tutan sınıf olarak bırakın. Bu ders için main'i Tag içine koymayın. Örnek metotlar sayfasından kalan bir Desk dosyası hâlâ klasördeyse, bu ders için java Desk çalıştırmayın — Tag.java ve Yard.java'yı derledikten sonra java Yard çalıştırın.
public class Yard {
public static void main(String[] args) {
Tag.ping();
}
}
Her iki dosyayı tutan klasörden javac Tag.java Yard.java çalıştırın. İkisi de tamam olduğunda önce Tag.java'yı, sonra Yard.java'yı derleyebilirsiniz. Parantezler, süslü parantezler ve noktalı virgüller uyuşunca javac kendi satırını yazmaz. Sonra java Yard çalıştırın — java Yard.java değil, java Tag de değil. Çalıştırma komutundan .java uzantısını çıkarın. main'i tutan sınıfı başlatın. Aynı komutlar Windows'ta ve macOS'ta çalışır.
Program bir satır yazıp durmalıdır: ok. Sizden yazmanızı istememelidir. Terminal klavye girişi bekliyorsa, eski bir alıştırmadan kalan bir nextLine çağrısı hâlâ bir dosyadadır. O çağrıyı silin; Yard'da Tag.ping();'i, Tag'da static void ping'i tutun.
Çalıştırmayı bir kez adım adım izleyin. Java Yard.main'den başlar. Tag.ping() çağrısı Tag sınıfındaki static metodu bulur ve gövdesini çalıştırır. Gövde ok yazdırır. Nesne kurulmadı. Ekran ok gösterir. Başka bir şey yazılmamalıdır. 4 veya 5 görürseniz, hâlâ bump dersinden eski bir Desk programını çalıştırıyorsunuzdur.
Yard.main içinde önde Tag. olmadan ping(); yazarsanız, bu biçimde javac reddeder. Static metot hâlâ kendi sınıf adına ihtiyaç duyar (veya henüz kullanmadığınız dikkatli bir import stiline). Tag.ping(); tutun. void'i static olmadan bırakırsanız, o zaman Tag.ping(); bir örnek metot için yanlış çağrı türüdür — static'i geri koyun. Başlık static void ping() gibi görünmelidir; yalnız void ping() değil, ve bu yazdırma demosu için static int ping() de değil.
Tag.ping ve j.bump yan yana
Kısa bir tablo iki çağrı biçimini net tutar.
📊 static vs instance call
| Çağrı | Önce nesne gerekir mi? |
|---|---|
Tag.ping(); |
hayır — sınıf adı yeter |
j.bump(); |
evet — Jar j = new Jar(3); sonrasında |
static void ping() |
sınıftaki metot |
void bump() |
her nesnedeki metot |
Tablo yalnızca bir hatırlatmadır. Bu sayfada tuttuğunuz satır Yard içinde Tag.ping();, Tag içinde static void ping() ile birlikte. |
Örnek metotlarla karşılaştırma
Örnek metotlar sayfasında j.bump() bir jar'ın fill'ini değiştiriyordu. O hâlâ çalışır. Bu sayfa bir alanı değiştirmez. Sınıf-adı çağrısını görmeniz için yalnızca bir static metottan ok yazdırır. Kalmış bir Jar j = new Jar(3); j.bump(); demosu başka bir derstir. Bu sayfa için Tag, Yard ve Tag.ping(); tutun.
Başka günlerde hâlâ nesne kurabilirsiniz. Bu ders bilerek static yolu seçer. Bu sayfada aynı Yard demosunda j.bump() ile Tag.ping()'i karıştırmayın. Tek net yol yeter: metotta static, çağrıdan önce sınıf adı, ok yazdırma. Sonra bir programda her iki stile ihtiyaç duyduğunuzda her çağrıyı dürüst tutun — örnek metotlardan önce nesne, static metotlardan önce sınıf adı — böylece okuyucu hangi türü kastettiğinizi görür.
Bu çağrı için new Tag gerekmez
ping static olduğu için Yard çağrıdan önce bir Tag nesnesi ayırmaz. Tag t = new Tag(); yazıp sonra t.ping(); demek birçok düzende static metot için derlenebilir, ama bu sayfanın öğrettiği biçim değildir. Yalnız Tag.ping(); ile kalın. Ekran 4 veya 5 gösteriyorsa eski bir Desk bump demosu hâlâ çalışıyordur — java Yard'a geçin.
javac Tag üzerinde ping simgesini bulamadığını söylerse, metot başlığında static olup olmadığını ve her iki dosyanın aynı klasörde olup olmadığını kontrol edin. java Tag çalışır ve yararlı bir şey yapmazsa yanlış sınıfı başlattınız — main'i tutan Yard'ı başlatın.
access için ne kalır
Bu sayfa aynı klasörde bir public sınıf ve paket görünürlüğünde bir static metot kullanır. Sonraki sayfa — access — üyelerde public ve private gibi sözcükleri gösterir. Burada static çağrıyla kalın. Bu sayfada henüz bilmiyorsanız private static uydurmayın; ders hedefi static void ping() ile Tag.ping();'dir.
Klasör hâlâ Jar.java veya Desk.java tutuyorsa, dokunmayın veya yalnızca derleme komutunu karıştırıyorlarsa silin. Bu dersten Tag ve Yard çiftini derledikten sonra java Yard çalıştırın.
access'ten önce
Tag içinde static void ping() { System.out.println("ok"); } yazabilir ve Yard'dan nesne olmadan Tag.ping(); çağırabilirsiniz. Her iki dosyayı derleyin ve java Yard çalıştırın. Ekran ok gösterir. Static metot sınıf adı üzerinde çalıştı. Sonraki sayfa access'tir; orada diğer sınıfların hangi adları görebileceğini kontrol edersiniz.
Metotta static'i tutun. Çağrıdan önce sınıf adını tutun. main'i Yard'da tutun. Bu üç alışkanlık, ilerlemadan önce bu sayfanın kontrol noktasıdır.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek