Türetme Durumunda Başlangıç Metodlarının Çağrılması

Başlangıç metodlarının(constractor) amacı veri elemanlarına bir takım ilk değerleri vermektir. Türemiş sınıfın başlangıç metodu taban sınıfın elemanlarına ilk değerlerini veremez. İşte türemiş sınıf türünden bir nesne new operatörü ile yaratıldığında yalnızca türemiş sınıfın başlangıç metodu değil. Taban sınıfın başlangıç metodu da çağrılmaktadır. Örneğin;

Burada yalnızca B nin baslangıc metodu cagrilmaz hem B nin hem de Anın baslangic etodu cagrilir. Nesnenin B kısmına B nin baslangıc metodu A kısmına ise A nın kendi baslangıc metodu degerlerini vermektedir.
Nesne(4)
Class A
{
//…
}

Türemiş sınıf türünden bir nesne yaratıldıgında aslında derleyici yalnızca türemiş sınıfın baslangıc metodunu çağırır. Taban sınıfın başlangıc metodu türemiş sınıfın baslangıc metodu tarafından cagrılmaktadır. Yani “new B()” işleminde derleyici B nin baslangıc metodunu çagrır. B nin baslangıc metodu da A nın kini çağırmaktadır. Ayrıca derleyici türemiş sınıfın başlangıç metodunun ana bloğunun başına yerleştidiği gizli bir çağırma kodu yoluyla taban sınıfının baslangıc metodunu cagırmaktadır. Bu durumda önce taban sınıfın başlangıç metodu sonra türemiş sınıfın başlangıç metodunu çağırmış oluyoruz. Başlangıç metodlarının çalıştırılma sırası yukarıdan aşağıya doğrudur.
A <- B <- C <- D ‘nin çalıştırılma sırası ABCD dir…
Çağrılma sırası DCBA dır;  )

Bir dizi türetme yapıldıgında, başlangıç metodlarının çagırılma sırası yukarıdan aşagı doğrudur

A <- B<- C

Burada derleyici C nin baslangıç metodunu cağırır. C nin baslangıç metodu B nn baslangıc metodunu ve B nin baslangıc metodu ise A nın baslangıc metodunu cagırır.

Bir sınıfın taban sınıfı denildiğinde onun tüm taban sınıfları anlasılır. Bir sınıfın doğrudan taban sınıfı (‘direct base class’) onun bir yukarısındaki taban sınıftır. Sınıfın dolaylı taban sınıfları (‘indirect base classes’) doğrudan taban sınıfının taban sınıflarıdır.

Örneğin:

A <- B <- C <- D

D’ nin doğrudan taban sınıfı C dir.

Dolaylı taban sınıfları B ve A dır.

Kaynak:Kaan Aslan Hocanın Dersinde Tuttuğum Ders Notlarıdır.

Leave a Reply

Site Footer