Nihal's Blog

Posts Tagged ‘upcasting

Polimorfizm ve kalıtım iç içe kavramlardır. Kalıtımı önceki yazılarımda anlatmıştım. O yüzden tekrar anlatmayacağım. Kalıtımda türeyen sınıflar türedikleri sınıfların private özellikleri dışındaki özelliklerine sahip oluyorlardır ama ana sınıf kendinden türeyen sınıfların özelliklerine sahip olamıyordu.

Polimorfizm ile bir nesne farklı sınıflardan oluşturulan nesneler gibi davranabilir.

Basit bir örnekle anlatayım.

Polimorfizm sınıfında Goster(Kus k) yordamını oluşturalım. Kus sınıf tipindeki değişkene  Goster(p); ve Goster(k2);  ile Papagan ve Kugu tipindeki referanslar bağlandı. Papagan ve Kugu tipindeki nesnelerle çağrılması yukarı çevrim dir (upcasting). Upcasting ne olduğunu önceki yazılarımda anlatmıştım. Papagan ve Kugu tipindeki nesnelerin Kus tipinde davranması polimorfizmdir. Yazının devamını oku »

Bir önceki yazımda yukarı çevrimi (upcasting) anlatmıştım. Aşağıya çevrim (downcasting) yukarı çevrim (upcasting) işleminin tam tersidir.

Downcasting’in aksine upcasting güvenlidir. Çünkü daha özel bir tipten daha genel bir tipe çevrim olur ve upcasting işleminde özel bir ifade yazmaya gerek yoktur. Ama downcasting daha genel tipten daha özel bir tipe çevrim yapıldığından güvenli değildir.

Basit bir uygulama yapalım. Upcasting işlemini anlatırken yaptığım uygulamaya ilaveler yaptım.

Her sınıf Object sınıfından türer. Papagan sınıfını Object sınıf tipine çevirelim. Yazının devamını oku »

Java’da kalıtımın ne olduğunu ve nasıl kullanıldığını önceki yazılarımda anlatmıştım. Şimdi Upcasting’i inceleyelim.

Basit bir uygulama yapalım. 3 tane sınıf oluşturalım. Papagan sınıfı Kus sınıfından türesin, Kus sınıfı da Hayvan sınıfından türesin. Her papağan bir kuştur. Hayvan sınıfında Goster yordamında parametre Kus sınıfı tipinde ama oluşturulan Papagan nesnesinin referansı ile de bu yordamı çağırabiliyoruz. Böylece Papagan sınıfı türediği Kus sınıfına çevrilmiş oluyor.

Upcasting güvenlidir. Çünkü daha özel bir tipten daha genel bir tipe çevriliyor. Yukarı çevrim işleminde özel bir ifade yazmaya gerek yoktur ama aşağıya çevrimde (downcasting) gereklidir.

1 Yazının devamını oku »


Enter your email address to follow this blog and receive notifications of new posts by email.

Follow Nihal's Blog on WordPress.com