スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

継承とキャストについて

今更だけど、継承とキャストについて。


class Japanese
class Kansaijin : Japaneseを継承

上記のようにJapaneseクラスとJapaneseを継承したKansaijinクラスがあったとする。

次のキャストは可能である。
KansaijinをJapaneseにキャスト
e.g.) Kansaijin kan = new Kansaijin();
Japanese jpn = (Japanese)kan;

しかし次のキャストは不可能である。
JapaneseをKansaijinにキャスト
e.g.) Japanese jpn = new Japanese();
Kansaijin kan = (Kansaijin)jpn;
そりゃそうだよな。

次のキャストは可能
Japanese jpn = new Kansaijin();
Kansaijin kan = (Kansaijin)jpn;


つまり、親のインスタンスが子のインスタンスの型が同じであれば、
親→子へのキャストは可能。

ここで、C#の場合、親と子のインスタンスの型が同じかどうか判別するには、
"is"演算子を使う。同じであれば入れる場合は、"as"演算子を使う。

Japanese jpn = new Kansaijin();
if(jpn is Kansaijin) // trueになる

Kansaijin kan = jpn as Kansaijin(); // kanにはきちんと入る。
//jpnのインスタンスがKansaijinでなければ、nullが入る






終わり。 
(今さらながら初歩中の初歩だった。。。まぁ、最近blog書いてないし、いっか)




テーマ : プログラミング
ジャンル : コンピュータ

プロフィール

ss_9

名前 :ss_9
紹介 :
20代はエンジニア、30代はプロ、40代は管理、50代は人脈。

Twitterボタン

最新記事
カテゴリ
AD
月別アーカイブ
RSSリンクの表示
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。