Java Casting Nedir? Upcasting ve Downcasting (Referans Dönüşümü Anlatım)

Bu yazıda Java casting konusunu ele alacağız. Özellikle referans tür dönüşümleri, upcasting, downcasting ve instanceof kullanımı gibi önemli konuları örneklerle inceleyeceğiz.

Kısa özet: Java’da casting, bir nesnenin referans tipini değiştirmektir. Upcasting otomatik yapılırken, downcasting açıkça belirtilmelidir ve dikkat gerektirir.

Java Casting (Referans Dönüşümü) Nedir?

Java’da casting, bir nesnenin referans tipinin başka bir türe dönüştürülmesidir. Bu durum nesne yönelimli programlamanın temel kavramlarından biri olan polimorfizm (çok biçimlilik) ile yakından ilişkilidir.

Örneğin:

Hayvan hayvan = new Kopek();

Bu durumda hayvan referansı Kopek nesnesini tutar. Bu sayede hem Hayvan hem de Kopek davranışları kullanılabilir.

Polimorfizm Örneği

class Hayvan {
    void gurultuYap() {
        System.out.println("gürültü yapan hayvan");
    }
}

class Kopek extends Hayvan {
    void gurultuYap() {
        System.out.println("HAV HAV HAV");
    }

    void hirla() {
        System.out.println("hırrrrr");
    }
}

Şimdi aşağıdaki örneği inceleyelim:

Hayvan[] a = {new Hayvan(), new Kopek(), new Hayvan()};

for (Hayvan hyvn : a) {
    hyvn.gurultuYap();

    if (hyvn instanceof Kopek) {
        hyvn.hirla(); // HATA
    }
}

Bu kod derlenmez çünkü hirla() metodu sadece Kopek sınıfında tanımlıdır. Hayvan referansı üzerinden doğrudan erişilemez.

Downcasting (Aşağı Dönüşüm)

Alt sınıfa özgü metotlara erişmek için downcasting yapılmalıdır.

if (hyvn instanceof Kopek) {
    Kopek d = (Kopek) hyvn;
    d.hirla();
}

Burada hyvn referansı Kopek türüne çevrilir ve alt sınıfa ait metotlara erişim sağlanır.

Önemli: Downcasting yapmadan önce mutlaka instanceof ile kontrol edilmelidir.

Runtime Hatası Örneği

Aşağıdaki kod derlenir fakat çalışma zamanında hata verir:

class Hayvan { }
class Kopek extends Hayvan { }

class Test {
    public static void main(String[] args) {
        Hayvan hayvan = new Hayvan();
        Kopek d = (Kopek) hayvan; // Runtime error
    }
}

Çünkü hayvan aslında bir Kopek nesnesi değildir. Bu durumda ClassCastException hatası alınır.

Geçersiz Casting (Compile Error)

Hayvan hayvan = new Hayvan();
String s = (String) hayvan; // HATA

Bu kod derlenmez çünkü Hayvan ve String arasında hiçbir kalıtım ilişkisi yoktur.

Upcasting (Yukarı Dönüşüm)

Upcasting, alt sınıfın üst sınıfa dönüştürülmesidir. Bu işlem Java’da otomatik olarak yapılır.

Kopek d = new Kopek();

Hayvan a1 = d;           // otomatik
Hayvan a2 = (Hayvan) d; // explicit ama gereksiz

Bu dönüşüm güvenlidir çünkü her Kopek bir Hayvan’dır.

Önemli: Upcasting güvenlidir, ancak alt sınıfa ait metotlara erişimi sınırlar.

Upcasting vs Downcasting

  • Upcasting otomatik yapılır
  • Downcasting manuel yapılır
  • Downcasting risklidir (runtime hata olabilir)
  • Upcasting güvenlidir

Java Casting ile İlgili Sık Yapılan Hatalar

  • instanceof kontrolü yapmadan downcasting kullanmak
  • İlişkisiz sınıflar arasında casting yapmak
  • Upcasting sonrası alt sınıf metotlarına erişmeye çalışmak
  • Runtime hatalarını göz ardı etmek

Sık Sorulan Sorular

Java casting nedir?

Nesnenin referans tipinin başka bir tipe dönüştürülmesidir.

Upcasting nedir?

Alt sınıfın üst sınıfa dönüştürülmesidir ve otomatik yapılır.

Downcasting nedir?

Üst sınıf referansının alt sınıfa çevrilmesidir ve manuel yapılır.

instanceof neden kullanılır?

Downcasting öncesi tip kontrolü yapmak için kullanılır.

Sonuç

Java casting, özellikle OOP ve polimorfizm konularını anlamak için kritik bir konudur. Upcasting ve downcasting arasındaki farkı bilmek, hatasız ve güvenli kod yazmanı sağlar.

Etiketler: java casting, upcasting, downcasting, java instanceof, java oop

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *