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?