S.a. Arkadaşlar,
Bugünkü konumuz constructor yani yapılandırıcılardır. Her ne kadar yapılandırıcı kelimesi olsa da Türkçe karşılığı olarak biz yine constructorı kullanacağız. Nedir peki bu constructor ?
Bugünkü konumuz constructor yani yapılandırıcılardır. Her ne kadar yapılandırıcı kelimesi olsa da Türkçe karşılığı olarak biz yine constructorı kullanacağız. Nedir peki bu constructor ?
Bir
nesnenin otomatik olarak oluşmasını sağlayan metodlara benzeyen , fakat dönüş
tipi olmayan sınıfla aynı isimdeki yapıya diyoruz. Her sınıf bir constructori
vardır. Fakat eğer biz bunu tanımlamazsak derleyici bunu bize otomatik olarak
tanımlar. Ve de tanımlanan constructor class ile aynı erişim belirticine
sahiptir. Yani public sınıfımız varsa constructor da public olmalıdır. Tabi private,
procted de olabilirler.
Bu
kadar tanım herhalde şimdilik yetmiş olmalı. Peki kod kısmına geçelim yavaş
yavaş gerekli yerlerde yine kısa yorumlarla konuyu daha iyi pekiştireceğimize
inanıyorum.
Class A{
A(){ }
// A sınıfının yapılandırıcı
}
Fakat şöyle bir durum da var. Yukarıda
otomatik olarak constructor tanımlanır demiştik ama bu arka planda olur . Biz
görmüyoruz diye yok değildir. Bu konuya dikkat etmemiz gerekir. Fakat şöyle bir
nokta da vardır. Biz kendimiz bir constructor tanımladığımızda artık otomatik
olarak derleyici tarafından constructor tanımlanmaz. Bunu ise şöyle bir örnek
üzerinden yaparsak belki daha iyi anlamış olacağız.
Class A{
A(int
a, int b){
//kodlar
}
}
Main içinde bildiğiniz üzere A a
= new A(); il obje oluşturup bunu
kullanabiliyorduk fakat burada derleyici hata verecektir. Bunun sebebi ise
constructor içinde parametre tanımlanmış ve objemiz de argüman almalı yani A a
= new A(10,20); gibi olmalıdır. Peki yukarıdaki obje tanımının doğru olabilmesi
ne yapmamız lazm. Hemen söyleyelim. A sınıfın içine A(){} eklememiz
gerekmektedir. Tekrardan toparlamak gerekirse ; otomatik olarak çağırıldığında
böyle bir tanıma gerek duymazdık , fakat elle tanımladığımız için constructorı
, bu sefer A() {} eklememiz de gerekti.
Özelliklerine bakmaya devam
edelim birlikte ,
Class A{
Void A(){}
// bu tanımla doğrudur fakat bu constructor değil,metoddur.
//burada A(){} otomatik tanımlanır, ama
görünmez
}
Tekrar
bir sınıf ve bir constructor tanımlayıp bazı özelliklerinin üzerinde duralım
Private Class A{
Private
A(){ //erişim belirteci sınıfınki ile aynı olmalı demiştik
Super();
// ilk satır super()/this() olmalı !!
//kodlar
Private
A(int a) {} // overload yapabiliyoruz, fakat override yapamayız.
}
}
Hiç yorum yok:
Yorum Gönder