Upcasting nedir? Downcasting nedir?

Upcasting nedir? Downcasting nedir?

Upcasting ve downcasting, Java'da nesne tür dönüştürme işlemlerini ifade eden terimlerdir.

Upcasting, alt sınıf nesnelerinin, üst sınıfın bir nesne türüne atanmasıdır. Yani, bir alt sınıf nesnesi, üst sınıfın referans türüne atanabilir. Bu işlem otomatik olarak gerçekleştirilir ve herhangi bir ek işleme gerek yoktur.

Örnek kod:

class Person {
    public void introduce() {
        System.out.println("Ben bir kişiyim.");
    }
}

class Student extends Person {
    @Override
    public void introduce() {
        System.out.println("Ben bir öğrenciyim.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Student(); // Upcasting
        person.introduce(); // "Ben bir öğrenciyim."
    }
}

Yukarıdaki örnekte, Student sınıfı, Person sınıfından kalıtım aldığı için, Student sınıfı Person sınıfının alt sınıfıdır. Person sınıfının bir nesnesi, Student sınıfının bir nesnesine atanabilir (upcasting), ancak Student sınıfının bir nesnesi doğrudan Person sınıfının bir nesnesine atanamaz.

Downcasting ise, upcasting işleminin tersidir. Bir üst sınıf nesnesi, alt sınıfın referans türüne atanırken, downcasting kullanılır. Ancak, downcasting işlemi otomatik olarak gerçekleşmez. Bu işlem açıkça yapılmalıdır ve bunun için (AltSınıfAdı) şeklinde bir tür dönüşümü kullanılır.

Örnek kod:

class Person {
    public void introduce() {
        System.out.println("Ben bir kişiyim.");
    }
}

class Student extends Person {
    @Override
    public void introduce() {
        System.out.println("Ben bir öğrenciyim.");
    }

    public void study() {
        System.out.println("Ben ders çalışıyorum.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Student(); // Upcasting
        person.introduce(); // "Ben bir öğrenciyim."

        Student student = (Student) person; // Downcasting
        student.study(); // "Ben ders çalışıyorum."
    }
}

Yukarıdaki örnekte, Person sınıfının bir nesnesi önce Student sınıfının bir nesnesine atanmıştır (upcasting). Daha sonra, Student sınıfının referans türüne (downcasting) geri dönüştürülmüştür. Bu sayede, study() metoduna erişim sağlanabilmiştir. Ancak, downcasting işlemi her zaman güvenli değildir ve hatalara neden olabilir. Bu nedenle, downcasting işlemleri dikkatli bir şekilde yapılmalıdır.

Upcasting nedir? Downcasting nedir?
Paylaş: