POLYMORPHISM

 

JAVA İLE POLYMORPHISM

Polymorphism kelime anlamı olarak çoklu şekil veya çoklu biçim anlamına gelmektedir. Kalıtım ( inheritence ) ile iç içedir. Birbirleriyle beslenirler. Kalıtım konusunda sınıflar türetmiştik ve bu sınıflar arasında ilişkiler bağlantılar kurmuştuk.

Polimorfizm yapılarak bir nesne farklı bir nesne gibi davranabilir. Mesela “ses” diye bir metodumuz olsun. Super sınıfımız hayvan olsun ve bu sınıfın sub sınıfları olan kuş, kedi ve köpek sınıfları bulunsun. “ses” metodumuz kalıtım yoluyla her sınıfın içerisinde override edilerek kullanılabilir ve aynı metot bütün sınıflar da farklı görev yapacaktır. Dilerseniz kod üzerinde anlatıma devam edelim ve anlatımımızı görselleştirelim.

ÖRNEK:

 

Polimorfizm’de bir nesne birden fazla nesneye bağlanabilir ↓↓

  • Şu şekilde de tanımlama yapabilirdik.

hayvan h = new hayvan();

hayvan miyav = new kedi();

hayvan  CikCik = new kus();

hayvan HavHav = new kopek();

  • kedi, kuş ve köpek hayvan sınıfından kalıtım aldığından dolayı hayvan nesnesi ile kedi kuş ve köpek nesneleri oluşturabiliyoruz.
  • Aşağıda ise yine metotlara erişim sağlanıyor.

SesleriDinle(h);

SesleriDinle(miyav);

SesleriDinle(CikCik);

SesleriDinle(HavHav);

Eğer yukarıdaki program kodlarında SesleriDinle metodumuzu kullanıp nesneleri almasaydık uzun kod satırlarıyla uğraşacaktık. Polimorfizm bizi uzun uzadıya kod yazmaktan kurtarıyor. Eğer polimorfizm kullanmasaydık nasıl bir kod parçası oluşacaktı şimdi onu görelim.

ÖRNEK:

Polimorfizm işte bizi bu kod satırlarını yazmamızdan kurtarıyor. Yukarıda dikkat edilirse instanceof anahtar kelimesi kullanılıyor. Burada parametremizdeki nesne hangi sınıfa ait ise o sınıftaki nesne çalıştırılıyor. Yani eğer nesne hayvan sınıfına ait ise hayvan sınıfının nesnesi olduğu anlaşılıyor ve ona göre true veya false ekrana yazdırılıyor.

Yorum satırında kullandığım “cast” kelimesi ise şu işe yarıyor: Parametrede yer alan nesne hayvan sınıfına ait bir nesnedir ve bu nesneyi başka bir sınıfta kullanmak istiyorsak cast işlemini uyguluyoruz. Çünkü nesnemiz farklı bir sınıfta kullanılıyor.

  • Instanceof anahtar kelimemize biraz daha geniş anlatım yapalım ve kullanımını daha iyi kavrayalım.

 

INSTANCEOF

Instanceof nesnelerin hangi sınıflardan oluştuğunu bulmaya yardımcı olur.

ÖRNEK:

 

Yukarıdaki kod parçamız da insan, hayvan ve madde sınıflarından birer nesne oluşturup instanceof ile bu nesnelerin hangi sınıflar tarafından oluşturulduğunu ve true mu yoksa false değer döndüreceğini görmüş olduk. Peki diyelim ki kalıtım yoluyla sınıflar türettik bu sefer nasıl çalışacak? Hemen örneğe bakalım.

 

ÖRNEK:

 

GETCLASS METODU

Java’da instanceof mantığında çalışan başka bir metot daha vardır. O da getclass() metodudur. Bu metot yalnız başına kullanıldığı takdirde nesnenin ait olduğu sınıfı sonuç olarak verir. Bir örnek üzerinden devam edelim.

ÖRNEK:

 

Lütfen kod satırlarına yazığım yorum satırlarını iyi okuyunuz. getclass() metodu ile gerekli bilgileri yorum satırlarında belirttim.

NOT:Java’da tüm sınıflar Object sınıfından türediği için, herhangi bir nesne aynı zamanda Object sınıfının bir örneğidir. Dolayısıyla bir alt sınıf, aynı zamanda tüm üst sınıflarının bir örneği sayılır. Fakat üst sınıflardan oluşturulan nesneler, alt sınıfların bir örneği sayılmazlar.” (KİRAZLI-TANRIVERDİOĞLU – 2016 : 333).

 

POLYMORPHISM” için 2 yorum

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.