logo

Java'da Upcasting ve Downcasting

Bir veri tipini diğerine dönüştürme işlemine ne ad verilir? Tipleme Ve Yukarıya Yayınlama Ve Aşağıya doğru nesne tipleme türüdür. Java'da nesne de veri türleri gibi türe dönüştürülebilir. Ebeveyn Ve Çocuk nesneler iki tür nesnedir. Dolayısıyla, bir nesne için iki tür tipleme mümkündür; Ebeveynden Çocuğa Ve Çocuktan Ebeveyne ya da söyleyebilirim Yukarıya Yayınlama Ve Aşağıya doğru .

İçinde Java nesne de veri türleri gibi türe dönüştürülebilir. Ebeveyn Ve Alt nesneler iki tür nesnedir. Dolayısıyla, bir nesne için iki tür tipleme mümkündür; Ebeveynden Çocuğa Ve Çocuktan Ebeveyne ya da söyleyebilirim Yukarıya Yayınlama Ve Aşağıya doğru .

Tipleme Değişkenlerin bir fonksiyon tarafından doğru şekilde işlenip işlenmediğini kontrol etmek için kullanılır. İçinde Yukarıya Yayınlama Ve Aşağıya doğru , yazıyoruz bir alt nesnenin bir ana nesneye Ve bir ana nesneden bir alt nesneye eşzamanlı. Upcasting'i örtülü veya açık bir şekilde gerçekleştirebiliriz, ancak downcasting örtülü olarak mümkün olamaz.

Java'da Upcasting ve Downcasting

Bu tür nesne dökümünün her ikisinin de derinliklerine dalalım:

dize java dizisi

1) Yukarıya Yayınlama

Yukarıya Yayınlama bir tür nesne türü yayınıdır; alt nesne bir yere yazılmıştır ebeveyn sınıfı nesnesi . Upcasting'i kullanarak ebeveyn sınıfın değişkenlerine ve yöntemlerine alt sınıfa kolayca erişebiliriz. Burada tüm değişkenlere ve yönteme erişemiyoruz. Alt sınıfın yalnızca belirli bazı değişkenlerine ve yöntemlerine erişiriz. Yukarıya Yayınlama olarak da bilinir Genelleme Ve Genişletme .

UpcastingExample.java

int'den string'e dönüştürme
 class Parent{ void PrintData() { System.out.println('method of parent class'); } } class Child extends Parent { void PrintData() { System.out.println('method of child class'); } } class UpcastingExample{ public static void main(String args[]) { Parent obj1 = (Parent) new Child(); Parent obj2 = (Parent) new Child(); obj1.PrintData(); obj2.PrintData(); } } 

Çıktı:

Java'da Upcasting ve Downcasting

2) Aşağıya İndirme

Yukarıya Yayınlama başka bir nesne türü yayınlama türüdür. Upcasting'de alt sınıfa bir ana sınıf referans nesnesi atarız. Java'da alt sınıfa ebeveyn sınıf referans nesnesi atayamayız ancak downcasting yaparsak herhangi bir derleme zamanı hatası almayacağız. Ancak onu çalıştırdığımızda, 'ClassCastException' . Şimdi mesele şu ki, eğer Java'da downcasting mümkün değilse, o zaman derleyici buna neden izin veriyor? Java'da bazı senaryolar downcasting yapmamıza izin verir. Burada alt sınıf nesnesine ana sınıf tarafından başvurulur.

Aşağıda hem geçerli hem de geçersiz senaryoların açıklandığı bir indirgeme örneği verilmiştir:

DowncastingExample.java

 //Parent class class Parent { String name; // A method which prints the data of the parent class void showMessage() { System.out.println('Parent method is called'); } } // Child class class Child extends Parent { int age; // Performing overriding @Override void showMessage() { System.out.println('Child method is called'); } } public class Downcasting{ public static void main(String[] args) { Parent p = new Child(); p.name = 'Shubham'; // Performing Downcasting Implicitly //Child c = new Parent(); // it gives compile-time error // Performing Downcasting Explicitly Child c = (Child)p; c.age = 18; System.out.println(c.name); System.out.println(c.age); c.showMessage(); } } 

Çıktı:

Java'da Upcasting ve Downcasting

Neden Upcasting ve Downcasting'e ihtiyacımız var?

Java'da nadiren kullanırız Yukarıya Yayınlama . Yalnızca ana sınıfla ilgilenen bir kod geliştirmemiz gerektiğinde kullanırız. Aşağıya doğru alt sınıfın davranışlarına erişen bir kod geliştirmemiz gerektiğinde kullanılır.

Java'da
Java'da Upcasting ve Downcasting

Upcasting ve Downcasting arasındaki fark

Upcasting ve Downcasting arasındaki aşağıdaki farklar şunlardır:

Evet Hayır Yukarıya Yayınlama Aşağıya doğru
1. Bir alt nesne, bir üst nesneye türetilir. Ana sınıf nesnesinin referansı alt sınıfa iletilir.
2. Upcasting'i örtülü veya açık olarak gerçekleştirebiliriz. Örtük olarak Downcasting mümkün değildir.
3. Alt sınıfta ana sınıfın yöntemlerine ve değişkenlerine erişebiliriz. Her iki sınıfın (ebeveyn ve çocuk) yöntemlerine ve değişkenlerine erişilebilir.
4. Alt sınıfın belirli bazı yöntemlerine erişebiliriz. Her iki sınıfın tüm yöntemlerine ve değişkenlerine downcasting gerçekleştirilerek erişilebilir.
5. Ebeveyn p = yeni Ebeveyn() Ebeveyn p = yeni Çocuk()
Çocuk c = (Çocuk)p;