Polymorphsim’de Referans Nedir?

Polymorphsim yazısını okumadan önce Polymorphism Nedir? Neden Kullanılır? ve Interface Nedir? yazılarını okumanızı tavsiye ederim.

Zira bu içerik her iki başlıktan da konular içermektedir. Bu yüzden konuyu kavramanız için gerekli bütün teorik bilgiler bahsedilen başlıklarda mevcuttur.

instanceOf Anahtar Kelimesi Nedir?

Bir objenin hangi class’dan olduğunu anlamak için instanceOf kullanır. Java uygulamalarında oldukça fazla kullanılan bir yöntemdir.

BeyazYakali ve MaviYakali sınıfları Calisan sınıfının alt sınıflarıdır.

Main class içerisinde iki sınıftan da nesne oluşturalım ve içerisinde gorevTanim() isminde bir başka metot daha tanımlayalım. Bu metot Calisan sınıfından parametre kabul ediyor olsun.

Yukarıdaki kod bloğunda görüldüğü üzere BeyazYakali ve MaviYakali sınıfından birer nesne yarattık ve bu nesnenin Calisan sınıfına ait olup, olmadığını bir döngü içerisinde kontrol ettik. Dönüş değeri de true olduğu için döngüye girdi ve yalnizca BeyazYakali sınıfına ait nesnenin görev tanımını yaptı.

Polymorphism ve Referans

Daha önce üst sınıf-alt sınıf ilişkisi ile kalıtım kullanımı ve polymorphism ilişkisini görmüştük. Bu çerçevedeki örnekte bir metodun parametre olarak; bir alt sınıf nesnesini üst sınıf nesnesi kalıbında kabul etmesini görmüştük. Benzer bir çok biçimliliği interface kullanarak da yapabiliriz.

Örneğin Karsilama interface’i ve bu interface’i implemente eden iki sınıfı inceleyelim.

Önceki Polymorphsim konusunda gördüğümüz örneğe benzemekle birlikte burada referans değişkeni ve nesne oluşturma ayrımına dikkat etmeliyiz. Aşağı tarafta Karsilama referansi, bir Karsilama nesnesi oluşturulacağı anlamına gelmez. Sonuçta bir interface nesnesi oluşturamayız.

Karsilama referansı RunTime esnasında, oluşturulacak nesnenin Karsilama interface’ni uygulayan bir sınıftan nesne olacağını gösterir. new Ingilizce() yada new Turkce() ifadesi ile de bellekte belirtilecek olan sınıftan nesne oluşturulur.

mesajYazdir() metodu ise Karsilama interface’i uygulayan bir sınıftan nesne beklemektedir. Dolayısıyla bu interface’i implemente eden iki farklı sınıftan nesneyi bu metoda parametre olarak gönderebiliriz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir