Java Instanceof Kullanımı ve Object Sınıfı

Bu yazımızda instanceof kullanımı ve Object sınıfını olabildiğince sade bir şekilde , örnek ile açıklamaya çalışacağız.

Object sınıfı Java’da sıkılıkla kullanılır.Bu sınıf Java’da bulunan en üst sınıftır ve oluşturulan tüm sınıflar Object sınıfının bir alt sınıfı olarak oluşur.Diğer alt sınıflardan oluşturulmuş nesneleri Object tipine dönüştürmek istediğimizde direkt olarak atama işlemini yapılabiliyoruz.Yani önüne parantez içerisinde herhangi bir sınıf ifadesi yazmamıza gerek yok.Örnek bir kod ile açıklayacak olursak şu şekilde yazarız ;

Site kodlarnet=new Site();
Object o=kodlarnet;

Eğer Object tipinde nesneyi başka bir sınıfa dönüştürmek istiyorsak , nesnenin oluşturmak istediğimiz sınıftan türeyip türemediğinin kontrolünü yapmamız gerekir.Bu kontrol işlemini yaparken instanceof anahtarını kullanacağız.

Instanceof Kullanımı

object sınıfı kalıtım şema örneği

Instanceof kullanımı oldukça basittir.Anahtar kelimemiz Object tipindeki nesnenin tipini sorgulamaya yarar.Eğer sorguladığımız object tipinde nesne ; verdiğimiz sınıftan türemişse true , türememiş ise false değer döndürür.Basit bir if bloğu ile tip sorgulaması yapıp , dönen boolean değere göre dönüşüm işlemini gerçekleştirebiliriz.

Örnek kodumuz;

if(o instanceof Site){
    Site tempsite=(Site)o;
    System.out.println(tempsite.getSiteAdresi());
}

Ayrıca üst-alt sınıflar arasındaki ilişkiyi instanceof anahtarı ile şu sorgulayabiliriz ;

public class Site{
}
public class Oyunsitesi extends Site{
}
public class Habersitesi extends Site{
}
public static void siteHiyerarsisi(Site s , Oyunsitesi o,Habersitesi h){
      if(s instanceof Site){
             System.out.println("s nesnesi Site sınıfından türemiştir");
      }
      else{
            System.out.println("s nesnesi Site sınıfından türememiştir");
      }
      if(o instanceof Site){
            System.out.println("o nesnesi Site sınıfından türemiştir");
      }
      else{
            System.out.println("o nesnesi Site sınıfından türememiştir");
      }
      if(h instanceof Site){
            System.out.println("h nesnesi Site sınıfından türemiştir");
      }
      else{
            System.out.println("h nesnesi Site sınıfından türememiştir");
      }
      if(s instanceof Habersitesi){
            System.out.println("s nesnesi Habersitesi sınıfından türemiştir");
      }
      else{
      System.out.println("s nesnesi Habersitesi sınıfından türememiştir");
      }
      if(s instanceof Oyunsitesi){
            System.out.println("s nesnesi Oyunsitesi sınıfından türemiştir");
      }
      else{
            System.out.println("s nesnesi Oyunsitesi sınıfından türememiştir");
      }
}

Çıktı :

s nesnesi Site sınıfından türemiştir
o nesnesi Site sınıfından türemiştir
h nesnesi Site sınıfından türemiştir
s nesnesi Habersitesi sınıfından türememiştir
s nesnesi Oyunsitesi sınıfından türemiştir

Burada görüldüğü üzere Habersitesi ve Oyunsitesi sınıfları Site sınıfının alt sınıfları olarak oluşturulmuştur.Alt sınıflar üst sınıfların kalıtımsal olarak özelliklerini aldığı için yukarıdaki örnekte instanceof kavramı tüm nesneler için Site sınıfı karşılaştırmasına doğru yanıtını verdi.Ancak Site sınıfı Habersitesi ve Oyunsitesi’nden türemediği için yanlış değerini döndürmüş oldu.Kalıtımsal olarak Ata sınıflar çocuktan türemez.

Object sınıfından diğer sınıflara ve diğer sınıflardan Object sınıfına tip değişimi bu şekilde gerçekleşiyor..

Instanceof ile alakalı resmi Oracle dökümanına buradan , değişkenler arasında casting işlemi ile ilgili yazdığımız yazımızı da buradan okuyabilirsiniz.

Mert İnal

Programlamayı ve teknoloji seviyorum.Kocaeli Üniversitesi Bilgisayar Mühendisliği 3.sınıf öğrencisiyim.Bu siteyi programlama konusunda Türkçe içerik biriktirmek ve eksik olduğum konuları yazarak öğrenmek üzerine kurduk.Kodlar.Net ekibi zengin içerikler ile bir programlama arşivi biriktirmeyi hedefler.

Bir cevap yazın

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