あるデータ型を別のデータ型に変換するプロセスは、 タイプキャスト そして アップキャスト そして ダウンキャスト オブジェクトの型キャストのタイプです。 Java では、オブジェクトもデータ型と同様に型キャストできます。 親 そして 子供 オブジェクトには 2 つのタイプのオブジェクトがあります。したがって、オブジェクトに対して可能な型キャストには 2 つのタイプがあります。 親から子へ そして 子から親へ または言うことができます アップキャスト そして ダウンキャスト 。
文字列を整数に変換する
で ジャワ 、オブジェクトはデータ型と同様に型キャストすることもできます。 親 そして 子オブジェクト 2 種類のオブジェクトです。したがって、オブジェクトに対して可能な型キャストには 2 つのタイプがあります。 親から子へ そして 子から親へ または言うことができます アップキャスト そして ダウンキャスト 。
タイプキャスト 変数が関数によって正しく処理されるかどうかを確認するために使用されます。で アップキャスト そして ダウンキャスト 、タイプキャストします 子オブジェクトから親オブジェクトへ そして 親オブジェクトから子オブジェクトへ 同時に。アップキャストは暗黙的または明示的に実行できますが、ダウンキャストは暗黙的に実行できません。
これら両方のタイプのオブジェクト キャストについて詳しく見てみましょう。
1) アップキャスト
アップキャスト オブジェクト型キャストの一種です。 子オブジェクト に型キャストされます 親クラスのオブジェクト 。アップキャストを利用することで、親クラスの変数やメソッドを子クラスへ簡単にアクセスすることができます。ここでは、すべての変数とメソッドにアクセスするわけではありません。子クラスの指定された一部の変数とメソッドのみにアクセスします。 アップキャスト としても知られています 一般化 そして 拡幅 。
UpcastingExample.java
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(); } }
出力:
辞書順に
2) ダウンキャスト
アップキャスト これは、別のタイプのオブジェクト型キャストです。アップキャストでは、親クラスの参照オブジェクトを子クラスに割り当てます。 Java では、親クラスの参照オブジェクトを子クラスに割り当てることはできませんが、ダウンキャストを実行してもコンパイル時エラーは発生しません。ただし、実行すると、 'クラスキャスト例外' 。ここで重要なのは、Java でダウンキャストが不可能な場合、なぜコンパイラでダウンキャストが許可されるのかということです。 Java では、一部のシナリオではダウンキャストを実行できます。ここで、サブクラス オブジェクトは親クラスによって参照されます。
以下はダウンキャストの例で、有効なシナリオと無効なシナリオの両方が説明されています。
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(); } }
出力:
なぜアップキャストとダウンキャストが必要なのでしょうか?
Javaではめったに使用しません アップキャスト 。親クラスのみを扱うコードを開発する必要がある場合にこれを使用します。 ダウンキャスト は、子クラスの動作にアクセスするコードを開発する必要がある場合に使用されます。
アップキャストとダウンキャストの違い
アップキャストとダウンキャストの違いは次のとおりです。
はい・いいえ | アップキャスト | ダウンキャスト |
---|---|---|
1. | 子オブジェクトは親オブジェクトに型キャストされます。 | 親クラスのオブジェクトの参照が子クラスに渡されます。 |
2. | アップキャストは暗黙的または明示的に実行できます。 | 暗黙的なダウンキャストは不可能です。 |
3. | 子クラスでは、親クラスのメソッドと変数にアクセスできます。 | 両方のクラス (親クラスと子クラス) のメソッドと変数にアクセスできます。 |
4. | 子クラスのいくつかの指定されたメソッドにアクセスできます。 | ダウンキャストを実行すると、両方のクラスのすべてのメソッドと変数にアクセスできます。 |
5. | 親 p = new Parent() | 親 p = new Child() 子 c = (子)p; |