"Enter"a basıp içeriğe geçin

Ana sınıfın çağırılması

 

Java’da her şey sınıflardan oluşur. Mesela C++ de main fonksiyonu vardır, program çalıştırıldığında o fonksiyon çağrılır. Ama Java öyle değildir.

Java’da sınıflar farklı dosyalarda bulunabilir. Her bir dosyanın içinde en az 1 public sınıf olmak zorundadır. Ayrıca public sınıfın adı, dosya adıyla aynı olmalı

Bu public sınıflardan bir tanesi, önceden ana sınıf olarak belirlenir. Ana sınıfın içinde bir main metodu bulunur ve program çalıştığında otomatik olarak Main sınıf içindeki main metod çağırılır.

Daha önceden görmüştük ki, bir sınıfın fonksiyonlarını kullanabilmemiz için önce ondan bir nesne oluşturmamız gerekir. Ve fonksiyonlara bu nesne üzerinden erişebiliriz.
Ancak bazen nesne oluşturmadan da fonksiyonları kullanmak isteyebiliriz. Bu durumda fonksiyonu static olarak tanımlamamız gerekir.

Main de aslında bir sınıftır. Şimdiye kadar main içindeki fonksiyonlarımızı (main fonksiyonu dahil) public static olarak tanımlamamızın sebebi budur.

Static üyeler nesnelerden bağımsız olup, sınıfın geneline ait olduklarından nesne olmadan da çalıştırılabilirler. Ayrıca static fonksiyonun içinde o sınıf veya diğer sınıflara ait static fonksiyonlar da nesne oluşturulmadan kullanılabilir.

Sonuç olarak main fonksiyonu kod başladığında nesne oluşturulmadan otomatik çalıştırılabilmesi için static olarak tanımlanır.

Aslında kodumuzu derlediğimizde, ilk olarak ana sınıftaki Main metodunu çağıran kısa bir kod oluşturulur. Ve program başladığında bu kod çalışır. Her şeyi başlatan da bu koddur.

Main sınıfındaki static olmayan fonksiyonları kullanabilmek için Main sınıfından bir nesne oluşturabiliriz.

Mantığınıza biraz daha oturması için kısa bir kod üzerinden göstereceğim.

 

Derleyici üzerinde ana sınıfımızı Anasınıf olarak belirledik. Yani program başlatıldığında, Anasınıf içinde main adında static bir fonksiyon arayacak ve onu çalıştırmaya başlayacak.

Ana sınıf static olduğu için, nesne oluşturmadan çalıştırabildik. Merhaba Dünya yazdı.  Anasınıf içinde 2 fonksiyon daha var. bunlardan biri static diğeri değil. Static fonksiyonların içinde, diğer static fonksiyonları nesne oluşturmadan çağırabiliyorduk(aslında erişim olan her yerden çağırabiliriz.)

Ancak static olmayan fonksiyon, nesne oluşturmadan çağırılamaz. Beklendiği gibi, staticfonk() fonksiyonu nesneden bağımsız olduğu için çalıştı. Ancak nonstaticfonk fonksiyonu static değil.
Bu durumda nonstaticfonk metodunu çalıştırabilmek için bir Anasınıf nesnesi oluşturmamız gerekir.

Main fonksiyonumuzun içinde Anasınıf nesnesi oluşturduk ve static olmayan metodu da çağırabildik.

Ayrıca main veya diğer static fonksiyonlarda, Anasınıf içindeki tüm static üyelere erişebiliriz. Ama static olmayan üyelere erişebilmek için nesne kullanmamız gerekir.

Ana Sınıf belirleme

Program başlatıldığında hangi sınıfın içindeki main metodun çağrılacağını, yani aslında hangi sınıfın ana sınıfımız olacağını aşağıdaki gibi belirleyebiliriz.

Run tuşunun yanındaki Main, aslında ana sınıf olarak hangi sınıfı belirlediğimizi gösterir. Şuanda ana sınıfımız Main imiş.

Yanındaki aşağı oka basıp Edit Configurations’a basarak Configuration ekranını açarız.

Main Class olarak Main seçili durumda. Programı çalıştırdığımızda da görürüz ki, program başlatıldığında Main sınıfının içinde main fonksiyonunu arıyor ve onu çalıştırıyor.

Yandaki 3 noktaya basarak Main Class’ı değiştirebiliriz. Main2 olarak ayarladım.

Programı şimdi çalıştırdığımızda, Main2 sınıfının içindeki main fonksionu çalıştı ve “Main2 üzerinden çağırıldı” yazdı.

Görüldüğü gibi aynı programın içinde birden çok main fonksiyonu olabilir ve hangisi üstünden çalışacağını kendimiz belirleyebiliriz.

 

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir