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;
 }
 
}

Polymorphism (Polimorfizm - Çok Biçimlilik) ve Late Binding (Geç Bağlama)

Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)