Java’da Çok Biçimlilik (Polymorphism) Tipleri

Java’da Çok Biçimlilik (Polymorphism) Tipleri

Java artık en popüler programlama dili değil - ShiftDelete.Net

Java’da iki çeşit polymorphism vardır. Birincisi compile-time diğeriyse run-time’dır. Eğer bu isimleriyle çok anlamlı gelmediyse, daha bilinen isimleriyle yazayım.

Compile-time polymorphism: method overloading
Run-time polymorphism: method overriding

Compile-time örneği:

https://gist.githubusercontent.com/mtnaln/b1b4fbf31cce60a8dc0d543d5d931f0b/raw/5ee0ac242c78f282bf225d0738da45854fdbf0a6/method-overloading-in-java.java

Operation sınıfındaki sum metodu polymorphism’e bir örnektir. Hangi sum metodunun kullanılacağına compile-time’da karar verilir.

Run-time örneği:

https://gist.githubusercontent.com/mtnaln/528455a6d53da4ffd231fe223e6f6110/raw/33ff5a5e209a11dfc49d22ecffce5350fd9852c0/method-overriding-in-java.java

4. satırda shape1 instance’ının tipi Shape’dir. new anahtar kelimesini kullanarak oluşturulan nesnenin tipi de Shape’dir. Yani eşitliğin sağı ve solu aynı tiptir.
5. satırdaki kod çalıştırıldığında shape is reversing… yazacaktır.
7. satırda ise farklı bir durum söz konusudur. Eşitliğin solundaki instance’ın tipi Shape’dir. Fakat sağ tarafın tipi Line’dır. Yani, sol taraf super class, sağ tarafsa child class tipindedir. Buna upcasting denir.
8. satırdaki kod çalıştırıldığında line is reversing… yazacaktır.
Hangi reverse metodunun çalışacağına JVM run-time’da karar verir.

NOTLAR

  • Eşitliğin sol tarafı ile sağ tarafı aynı tipte olabilir.
    Shape shape = new Shape();
  • Eşitliğin sol tarafı super class sağ tarafı ise ilgili super class’dan türemiş bir child class olabilir.
    Shape shape = new Line();
  • Eşitliğin sol tarafı child class sağ tarafı ise sol taraftaki child class’ın super class’ı olamaz.
    Line shape = new Shape(); // bu kullanım geçersizdir.

İyi günler,
Bol kodlamalar :)

Etiketler

Yorum Gönder

0Yorumlar
Yorum Gönder (0)