Java SE Ders25 - Polymorphism (Polimorfizm - Çok Biçimlilik) ve Late Binding (Geç Bağlama)
Polymorphism (Polimorfizm) aynı işi farklı biçimlerle yapmamızı sağlar. Polymorphism (Polimorfizm) işlemi üst sınıftaki bir metodu alt sınıflarda override ederek sağlanır.
Örnek olarak ;
- Sekil üst sınıfı tanımlayalım.
- Sekil üst sınıfında şeklin alanının hesaplayan alanHesapla metodu oluşturalım.
- Sekil üst sınıfından Kare ve Ucgen sınıflarını türetelim.
- Kare ve Ucgen alt sınıflarında alanHesapla metodunu şekillere uygun olarak override edelim.
- Böylece alanHesapla metotlarının hepsi alanı hesaplayacak.Fakat kendine has yöntemleriyle hesaplayacak. İşte bu çok biçimlilik polymorphism (polimorfizm) örneğidir.
- Şekil sınıfından oluşturulan nesnenin hangi sınıfın alanHesapla metodunu çağıracağı koşma zamanında belirlenir.Bu olaya da Late Binding (Geç Bağlama) denir.
Main.java
package test; public class Main { public static void main(String[] args) { Sekil s1=new Sekil(); Sekil s2=new Kare(4); Sekil s3=new Ucgen(2,11); System.out.println("Sekil alan\t: "+s1.alanHesapla()); System.out.println("Kare alan\t: "+s2.alanHesapla()); System.out.println("Ucgen alan\t: "+s3.alanHesapla()); } }
Sekil.java
package test; public class Sekil { public int alanHesapla() { return 0; } }
Kare.java
package test; public class Kare extends Sekil { private int kenar; public Kare() { } public Kare(int kenar) { this.kenar = kenar; } @Override public int alanHesapla(){ return kenar*kenar; } public int getKenar() { return kenar; } public void setKenar(int kenar) { this.kenar = kenar; } }
Ucgen.java
package test; public class Ucgen extends Sekil { private int taban, yukseklik; public Ucgen() { } public Ucgen(int taban, int yukseklik) { this.taban = taban; this.yukseklik = yukseklik; } @Override public int alanHesapla() { return (taban * yukseklik) / 2; } public int getTaban() { return taban; } public void setTaban(int taban) { this.taban = taban; } public int getYukseklik() { return yukseklik; } public void setYukseklik(int yukseklik) { this.yukseklik = yukseklik; } }
Yorumlar
Yorum Gönder