「自作クラスの型」にキャストする方法について。
「自作クラスの型」にキャストする方法について。
Java初心者ですが、よろしくお願いします。
class AAA
class BBB
※クラスAAAはクラスBBBのスーパークラス(直属のスーパークラスとは限らない)とします。
class CCC
という3つのクラスがあるとして、
この場合、
class CCC{
AAA var;
BBB bbb;
void test(){
bbb = new BBB();
var = (AAA)bbb; //---★
}
}
というような、キャストは可能ですよね?(←確認1)
次に(確認1に問題が無い場合)、
クラスAAAとクラスBBBの格納場所(パッケージ関連の話です)について、
AAAとBBBがどういう位置関係にあるときに、上記のキャストは可能になるのでしょうか?
AAAとBBBが同一パッケージ内にある時だけでしょうか?(←確認2[質問の核])
で、さらに、
上記の「---★」の所で、
AAAクラスにキャストする処理をしていますが、
この時、AAAクラスのコンストラクタは呼ばれるのでしょうか?
(AAAをnewしていないけれど、キャスト処理でnewしたのと同じことになったりしますか?)
また、これと同様の質問になりますが、
仮に、クラスAAAの設計が、クラスAAAのインスタンスが生成された場合に、
何らかのコールバック処理が行われるような設計の場合、
この (AAA)bbb というキャストによって、想定しているコールバック処理
は行われたりしますでしょうか?(←確認3)
初心者らしからぬ質問かもしれませんが、
どなたか、どうか分かりやすく教えて下さい。
お礼
予定を立てておく必要があるってことなんですね。 ありがとうございました。