Java でのダウンキャスト

MD Aminul Islam 2023年10月12日
  1. Java でのダウンキャスト
  2. 暗黙的にダウンキャストしようとするとコンパイラ エラーが発生する
Java でのダウンキャスト

Java を使用している場合は、TypeCastingUpCasting、または DownCasting を使用できます。 それらの使用の目的は、あるタイプから別のタイプに変換することです。

これには、変数またはオブジェクトを使用できます。 オブジェクトの場合、2 種類の変換を使用できます。

1つ目は親から子へ、2つ目は子から親へです。

ここで、Child から Parent への変換は UpCasting として知られ、Parent から Child への変換は DownCasting として知られています。 UpCasting は暗黙的または明示的に実行できますが、明示的に DownCasting しか実行できません。

この記事では、DownCastingの詳細を見ていきます。 また、トピックをより簡単にするために、必要な例と説明を使用してトピックを説明します。

Java でのダウンキャスト

ここで、DownCasting に関する例を見ていきます。

class ParentClass {
  String name;
  void showMessage() {
    System.out.print("Parent class method is called");
  }
}
class ChildClass extends ParentClass {
  int age;
  @Override
  void showMessage() {
    System.out.print("The child class method is called");
  }
}
class Downcasting {
  public static void main(String[] args) {
    ParentClass Parent = new ChildClass();
    Parent.name = "Alex";
    ChildClass Child = (ChildClass) Parent;

    Child.age = 21;
    System.out.print("Name:" + Child.name + " ");
    System.out.println("Age:" + Child.age);
    Child.showMessage();
  }
}

コードを部分的に説明しましょう。 まず、ParentClass という名前の親クラスを作成し、次に ChildClass という名前の子クラスを作成し、それを ParentClass で拡張します。

ChildClass では、@Override によるオーバーライドを実行しました。

その後、制御クラスである Downcasting という名前の別のクラスを作成しました。 クラスでは、ParentClass からオブジェクトを作成しました。

次に、ChildClass Child = (ChildClass)Parent; という行でオブジェクトをダウンキャストします。

最後に、すべてのデータを印刷します。 上記のJavaプログラムを実行した後。

以下のような出力が得られます。

Name:Alex Age:21
The child class method is called

暗黙的にダウンキャストしようとするとコンパイラ エラーが発生する

上記の例では、ダウンキャストを明示的に実行しました。 暗黙的にダウンキャストしようとすると、エラーが発生する可能性があります。

暗黙的にダウンキャストしようとした次の例を確認してください。

class ParentClass {
  String name;
  void showMessage() {
    System.out.print("Parent class method is called");
  }
}
class ChildClass extends ParentClass {
  int age;
  @Override
  void showMessage() {
    System.out.print("Child class method is called");
  }
}
class Downcasting {
  public static void main(String[] args) {
    ParentClass Parent = new ChildClass();
    Parent.name = "Alex";
    ChildClass Child = new ParentClass();

    Child.age = 21;
    System.out.print("Name:" + Child.name + " ");
    System.out.println("Age:" + Child.age);
    Child.showMessage();
  }
}

上記のプログラムをコンパイルしようとすると、次のようなエラーが発生します。

/tmp/AMCRVnDhlV/Downcasting.java:22: error: incompatible types: ParentClass cannot be converted to ChildClass
ChildClass Child = new ParentClass();
                           ^
1 error

DownCasting は外部で行う必要があることに注意してください。 DownCasting を使用すると、子オブジェクトは親オブジェクトのプロパティを取得できます。

ここで共有されているコード例は Java であり、システムに Java が含まれていない場合は、環境に Java をインストールする必要があることに注意してください。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn