1
c1はc3の基本クラスです。以下のコードは完全に機能します。クラスのキャスティングはどのように機能しますか?
c1 obj1=new c3();
c3 obj2=(c3)obj1;
しかし、私が見逃している何1
c1 obj1=new c1();
c3 obj3=(c3)obj1;
以下でClassCastExceptionがありますか?
c1はc3の基本クラスです。以下のコードは完全に機能します。クラスのキャスティングはどのように機能しますか?
c1 obj1=new c3();
c3 obj2=(c3)obj1;
しかし、私が見逃している何1
c1 obj1=new c1();
c3 obj3=(c3)obj1;
以下でClassCastExceptionがありますか?
私は、あなたがc1のインスタンスとしてobj1を作成していて、c1よりも継承チェーンをさらにクラスにキャストしようとしていると思います。
最初の例では、c1はc3の基本型であるため、型がc1の場合はc3のインスタンスを作成できます。これは問題ありません。 c3はc1の子であるため、すべてのプロパティとメソッドを継承します。
ただし、2番目の例では、タイプc1のc1のインスタンスを作成しています。あなたはそれを子供に投げかけようとしています。子クラスには、親が持たない追加のプロパティとメソッドがあるかもしれません。
要約すると、子はその親の型でキャストすることができますが、親は子にすることはできず、そのまま継承することはできません。
さらに詳しい説明が必要な場合は、教えてください。
これは私を多く助けました。ありがとうございました:) –
ようこそ。ハッピーに助けてください:) –
@ Literallyluke、あなたはまた、 'タイプ'と 'インスタンス'の違いを含めることができますか?彼らは実際に何を推測していますか? たとえば、 c1 obj = new c3(); ここで、c1は「型」、c3は「インスタンス」 –