C++/CLIをつつく17−多態性。曖昧なものを具体化。2008-06-23 Mon 12:24
この記事で最後のオブジェクト指向プログラミングの機能多態性(ポリモーフィズム)
に関するC++/CLIの機能を扱ってみよう。
名前は難しいけど、大したことしていないからみんなリラックスして読んでね。
さて、今回までにAnimal抽象クラスを元に、BirdクラスとHumanクラスを作ったけど、
個性が無いとつまらないよね?
それに、そもそも同じ機能ならば作る意味が無いピヨね。
ということでAnimal抽象クラスに一つメソッドを追加するピヨ。
ではさっそくコードだぁー。
さっそくこのコードをコンパイルしてね。 コンパイルしたら・・・ 警告 1 warning C4570: 'Sample::Bird' : 明示的に抽象として宣言されていませんが、抽象関数を含んでいます 警告 2 warning C4570: 'Sample::Human' : 明示的に抽象として宣言されていませんが、抽象関数を含んでいます エラー 3 error C2259: 'Sample::Bird' : 抽象クラスをインスタンス化できません。 エラー 4 error C2259: 'Sample::Bird' : 抽象クラスをインスタンス化できません。 とC++/CLIコンパイラに怒られるピヨ。でも、これでいいんだ。 こうすることによって、新しいDogクラスとかを作る際にMoveメソッドの実装を忘れないで済むんだ。 C++/CLIコンパイラに怒られたからMoveメソッドを実装してみよう。
このコードを実行してごらん。同じ同じMoveメソッドでも実行結果が違うピヨ。
これが多態性(ポリモーフィズム)なんだ。突然だけど、長すぎると読みにくいので次回へ続く。 |
この記事のコメント |
コメントの投稿 |
||
|
|
||
| 管理者だけに閲覧 | ||
|
|
||
この記事のトラックバック |
|
| 無差別に技術をついばむ鳥 |
|