Çok Biçimlilik
Posted on : 11-12-2008 | By : admin | In : Java, Yazılım
0
Nesneye yönelik programlamada polymorphism , nesnelerin içeride farklı çalışmalarına rağmen dışarıdan aynı biçimde görünmeleridir.
Bu şekilde, bir grup nesneyi kullanan sınıflar davranışların ne şekilde gerçekleştirildiğini bilmek zorunda kalmazlar. Ilerle metodu arabanin çekiş itişine göre farklı işlemler gerçekleştirebilir. Ancak araba kullanan kişi işlemlerin nasıl gerşekleştirildiği ile ilgilenmez. Sadece arabayı sürer. Yani çok biçimlilik somut bir nesnenin farklı sınıflara ait nesneler beklenen yerlerde sorun çıkartmadan kullanılmasıdır.
Çok biçimlilik iki şekilde sağlanır.
- Miras alma (inheritance)
- Arabirim kullanma (interface)
Miras alma
Bu şekilden de görebileceğimiz gibi birebir aynı özellikte olmayan, ama ortak özellikler barındıran nesneler için bir genel bir tanımlama, farklılıkları için özel tanimlamalara yaratabiliriz.
Öğrenci bir insandır.
Polis bir insandır.
Avukat bir insandır.
Bir sınıfın başka bir sınıftan türemesi o sınıfa ait tüm özellik ve metotlara sahip olması demektir. Buna miras alma yani inheritance denir. Bir sınıftan türeyen sınıflar hangi sınıftan türediklerini extends kelimesi ile belirtirler
Basitçe bir insan sınıfı bir de avukat sınıfı tanımlayalım.
public class Insan{
int yas;
String ad;
public void yuru()
public void dusun()
public void uyu()
}
public class Avukat {
int yas;
String ad;
int mezuniyet yili
public void yuru()
public void dusun()
public void uyu()
public void davaAc()
}
Avukat sınıfını Miras almak suretiyle yeniden tanımlayabiliriz.
public class Avukat extends Insan{
int mezuniyet yili
public void davaAc()
}
Javada türetilmiş sınıflara ait nesneler içlerinde temel sınıflara ait bir nesne barındırır. Bu sayede temel sınıfa ait tüm özelliklere sahip olmuş oluruz.
●Java da super sözcüğü üst sınıfı simgeler. Her türetilmiş sınıfın sadece tek bir üst sınıfı olur. Bu sayede karışıklık olmaz.
●Türetilen sınıflar üst sınıflarının değişkenlerini de miras alırlar
Temel ya da üst sınıfta ‘private’ olan özelliklere alt sınıftan erişilemez. Erişilmesi için ‘public’ yapılması durumunda da ilgili özellik herkese açık hale gelecektir. Sadece extend eden class’ın erişimini sağlamak için ‘protected’ erişim değiştiricisi kullanılır.
Overriding – Ezme
Alt sınıflar üst sınıflarından miras aldıkları metotların imzalarını değiştirmeden içeriklerini değiştirebilirler. Buna overriding yani metot ezme denir.
Bu işlem bazen methodun tamamen değiştirme, bazen de sadece bir ekleme yapma şeklinde olabilir.
Java da bir sinif sadece bir tane siniftan türeyebilir.
Multiple Inheritence yani birden fazla sınıftan miras alma javada desteklenmemektedir.
Arabirim Interface
Java’da arabirim, bir sınıfta dış dünyaya sağladığı özellik ve metotlardır.
Kendisi normal bir sınıf değildir.
Neyin yapılacağını gösterir ancak nasıl yapılacağını göstermez
Javada arabirimler aşağıdaki formatda yaratılır.
public interface Madde{
//ozellikler
//metot tanımları
}
——————————————-
Javada arabirimler aşağıdaki formatda yaratılır.
public interface Madde{
public double getHacim();
public double getKutle();
}
public static void main (Sring[] args){
Madde m = new Kup();
m.getHacim();
}

