CodeBlanks Logo Icon CodeBlanks

instanceof

instanceof ile tür kontrolünü öğrenirsin.

instanceof operatörü

instanceof operatörü, bir nesnenin belirli bir sınıfın örneği olup olmadığını kontrol eder. nesne instanceof Sinif ifadesi true veya false döndürür. Miras hiyerarşisinde de çalışır.

Örnek: Animal a = new Dog(); boolean b = a instanceof Dog;. Burada a, Dog örneği olduğu için b true olur. a instanceof Cat ise false döner. instanceof, bir nesnenin çalışma zamanındaki türünü belirler. Miras ilişkisinde üst sınıfa da true döner: a instanceof Animal da true'dur. Bu, tür güvenli dönüştürme (casting) öncesi kontrol için kullanışlıdır.

Güvenli dönüştürme

instanceof, bir nesneyi dönüştürmeden (cast) önce türünü kontrol etmek için kullanılır. Bu, ClassCastException hatasını önler. Önce kontrol et, sonra dönüştür.

Örnek: if (a instanceof Dog) { Dog d = (Dog) a; d.bark(); }. Burada a'nın Dog olduğundan emin olunur, sonra dönüştürme yapılır. Bu desen, güvenli tür dönüştürmenin standart yoludur. instanceof kontrolü olmadan (Dog) a yazmak, a bir Cat ise çalışma zamanı hatası verir. Kontrol ile bu risk ortadan kalkar.

Uygulama instanceof ile tür kontrolü yap

Animal adında bir sınıf tanımla. Dog extends Animal tanımla; void bark() metodu ekle, gövdede System.out.println("Hav"); yaz. main içini Animal'a koy; Animal a = new Dog(); yaz, if (a instanceof Dog) ile kontrol et, (Dog) a ile dönüştür ve bark() çağır.

Başlangıç kodu

Main.java
// Animal ve Dog sınıflarını tanımla
// main içinde instanceof ile kontrol et
// Dog'a dönüştür ve bark çağır

Örnek çözüm

Main.java
class Animal {
    public static void main(String[] args) {
        Animal a = new Dog();
        if (a instanceof Dog) {
            Dog d = (Dog) a;
            d.bark();
        }
    }
}
class Dog extends Animal {
    void bark() {
        System.out.println("Hav");
    }
}

Beklenen çıktı

Hav

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Animal a = new Dog(); a instanceof Animal ne döndürür?

  • null
  • false
  • Derleme hatası
  • true Doğru cevap

Açıklama: Dog, Animal'ın alt sınıfıdır; instanceof true döner.

2 instanceof kontrolünü tamamla

Soru
if (a ____ Dog) {
    Dog d = (Dog) a;
}
Cevap
if (a instanceof Dog) {
    Dog d = (Dog) a;
}

Açıklama: instanceof ile tür güvenle kontrol edilir.

3 instanceof kullanımlarını eşle

Kavram Anlamı
a instanceof Dog Tür kontrolü
true Dog örneği
false Cat örneği
(Dog) a Güvenli dönüştürme

Orta seviye bölümündeki tüm dersler