instanceof
- Java kursu
- Orta seviye
- Ders 34/116
- 4 dk
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
// 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
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
if (a ____ Dog) {
Dog d = (Dog) a;
}
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 |