Javada Abstract Classlar ve Metodlar

Daha önce yazmış olduğum javada kalıtım(inheritance) konusunu da çok yakından ilgilendiren bir yazı yazıyorum bugün. Aslında daha önceki  Java Programlamada Class ve Interface Örneği yazısında da kullandığım abstract classlar ve metodları bu yazıda açıklayacağım.

Javada abstract, zorlama demektir. Abstract olarak tanımlanmış bir metod şu anlama gelmektedir: “Beni bu class içinde değil, bu classdan kalıtım alacak olan bir alt classta yaz”. Yani bir programda abstract olarak tanımlanan bir metod, bulunduğu class içinde değil de bulunduğu classdan kalıtım alan classlar içinde yazılmalıdır. Bu paragrafın başından beri farkındaysanız abstractın işlevinden bahsediyorum. Anlamayanlar, kafasında henüz oturtamamış olanlar için bir de örnek vermek istiyorum. Mesela personel adında bir classınız var, bu class içinde çeşitli bilgiler var ama o işyerindeki tüm personellerin maaş alma biçimi aynı değil. Siz de bu class içinde maaş hesaplama işlemleriyle uğraşmak istemiyorsunuz. Bu durumda yapacağınız iş, personel classı içinde abstract olarak bir maaş metodu tanımlamak olur. Ardından, personel classından kalıtım alan bir salary classı oluşturur ve bu class içinde maaş metodlarını yazarsınız.

Kullanımını da birazdan göstereceğim ama bir önceki paragrafta bir şeye dikkatinizi çekmek istiyorum. Abstract metodlar derken, classlardan ve kalıtımdan bahsettim. Burdaki önemli nokta ise, abstract metod bulunabilmesi için programda bir kalıtım olayının bulunması gerekir. Abstract metodlarda dikkat edilmesi gereken önemli bir nokta da şudur ki abstract metodun yazılacağı classın da abstract olmasına dikkat edilmelidir. Umarım eksik bir nokta kalmamıştır. Aşağıda vereceğim örnek abstract class ve metod tanımlama kodlarıyla yazımı bitiriyorum.

public abstract class A //astract metod içeren classlar da abstract olur
{
public abstract float method();    //Abstract olarak tanımlanan metod
}

public class B extends A
{
public  float method()    // Abstract metodun yazılması
{

}
}

Bir cevap yazın

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