İlk olarak anlamı içinde de saklı biraz, Poly = birden çok anlamına gelir, Morph= şekil, biçim anlamına gelmektedir. İkisini birden düşünürsek “birden fazla şekli/ biçimi olan” olarak ifade edebiliriz kelime anlamına ilk baktığımız zaman. Bununla beraber,
Nasıl kullanırız derseniz, her hayvan farklı sesler çıkarır. Kedi miyavlar, köpek havlar vs. Yani çıkarılan ses , canlısına göre farklılık gösterir. Farklı şekilde olur.
Koda dökmeye çalışırsak da;
Mesela hayvan adında bir sınıf (class) oluşturup “ses” diye bir method olsun ve bundan türetilen (extend edilen) Kedi ve Köpek adında başka sınıflarımızı oluşturalım. Kedi deki “ses” methodu “miyav” dönsün , köpek sınıfındaki ise “hav hav”. Ses methodu kullanıldığı zaman kullanılan hayvan sınıfına göre farklı şekile girebilecektir.
public class Hayvan{
public String ses();
}
public class Kedi extends Hayvan{
public String ses(){
return "Miyav";
}
}
public class Kopek extends Hayvan{
public String ses(){
return "Hav hav";
}
}
Bir main sınıf oluşturup test edecek olursak;
public class Polimorfizm{
public static void main(String[] args){
Hayvan hayvanKedi = new Kedi();
System.out.println(hayvan1.ses());
Hayvan hayvanKopek = new Kopek();
System.out.println(hayvan2.ses());
}
}
Yakından inceleyecek olursak;
Hayvan hayvan = new Kedi();
Hayvan hayvan = new Kopek();
“Hayvan hayvan” şeklinde bir tanım yaptığımızı düşünelim. Bu havyan kedi mi yoksa köpek mi olacağını eşittirin sol tarafından anlayamıyoruz. Bize hayvanın türünü eşitliğin sağ tarafı gösterecek. hayvan = new Kedi() diye kodladığımız anda hayvanımız kedi, hayvan = new Kopek() şeklinde ise hayvanımızın köpek olduğunu belirtiyoruz. Şimdi hayvan.ses() dediğimiz zaman neyin sesi çıkacak? sadece hayvan.ses() fonksiyonu bize hangi hayvana ait bir nesne olduğunu belirtmiyor.
Uzun lafın kısası; farklı türden sınıflar üzerinden aynı fonksiyonun çağrılmasına çok-biçimlilik (polimorphism) diyoruz.
hayavan1.ses() –> “Miyav” ,
hayvan2.ses() methodu ise “Hav hav” dönecektir bize.
İlk olarak anlamı içinde de saklı biraz, Poly = birden çok anlamına gelir, Morph= şekil, biçim anlamına gelmektedir. İkisini birden düşünürsek “birden fazla şekli/ biçimi olan” olarak ifade edebiliriz kelime anlamına ilk baktığımız zaman. Bununla beraber,
Nasıl kullanırız derseniz, her hayvan farklı sesler çıkarır. Kedi miyavlar, köpek havlar vs. Yani çıkarılan ses , canlısına göre farklılık gösterir. Farklı şekilde olur.
Koda dökmeye çalışırsak da;
Mesela hayvan adında bir sınıf (class) oluşturup “ses” diye bir method olsun ve bundan türetilen (extend edilen) Kedi ve Köpek adında başka sınıflarımızı oluşturalım. Kedi deki “ses” methodu “miyav” dönsün , köpek sınıfındaki ise “hav hav”. Ses methodu kullanıldığı zaman kullanılan hayvan sınıfına göre farklı şekile girebilecektir.
public class Hayvan{ public String ses(); }public class Kedi extends Hayvan{ public String ses(){ return "Miyav"; } }public class Kopek extends Hayvan{ public String ses(){ return "Hav hav"; } }Bir main sınıf oluşturup test edecek olursak; public class Polimorfizm{ public static void main(String[] args){ Hayvan hayvanKedi = new Kedi(); System.out.println(hayvan1.ses()); Hayvan hayvanKopek = new Kopek(); System.out.println(hayvan2.ses()); } }Yakından inceleyecek olursak;
“Hayvan hayvan” şeklinde bir tanım yaptığımızı düşünelim. Bu havyan kedi mi yoksa köpek mi olacağını eşittirin sol tarafından anlayamıyoruz. Bize hayvanın türünü eşitliğin sağ tarafı gösterecek. hayvan = new Kedi() diye kodladığımız anda hayvanımız kedi, hayvan = new Kopek() şeklinde ise hayvanımızın köpek olduğunu belirtiyoruz. Şimdi hayvan.ses() dediğimiz zaman neyin sesi çıkacak? sadece hayvan.ses() fonksiyonu bize hangi hayvana ait bir nesne olduğunu belirtmiyor.
Uzun lafın kısası; farklı türden sınıflar üzerinden aynı fonksiyonun çağrılmasına çok-biçimlilik (polimorphism) diyoruz.
hayavan1.ses() –> “Miyav” ,
hayvan2.ses() methodu ise “Hav hav” dönecektir bize.