Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18440 / 76732 ←次へ | 前へ→

【63734】1だけ
回答  YU-TANG  - 09/12/5(土) 20:30 -

引用なし
パスワード
   こんばんは、YU-TANG です。

1 だけ。

> 1 擬似的にクラスを承継したいが為に、
>  子クラス内に使用したい親クラスのメソッド、プロパティを
>  全て書いていますが、他の実現方法がありますでしょうか?
>  (現状ですと、親クラスに変更、追加があった場合に関係する
>   全ての子クラスを修正しなければいけません。)

残念ながら、VBA では実現できません。
VB.NET のようなオブジェクト指向言語を使うしかないでしょう。

ただ、継承と関係ない使い方として、あるクラス foo に手を入れずに
特定の機能群を拡張可能にしたい場合は、それらをまとめたクラス bar
のインスタンス自体をプロパティとして公開してしまう方法が有ります。
この場合は、クラス bar を拡張しても、クラス foo を変更する必要は
ありません。その代わり、呼び出し方は foo.bar.hoge() のような
形になりますが。

あと、ご提示のコードでは、実際の継承は行われていませんね。
clsParent と clsChird のあいだには、何の関係性もありません。
たまたまメンバが同じ名前というだけで、独立したクラスです。
VBA には VBA で、ちゃんと継承の仕組みがあります。
もしかしたらご存知の上であえて使っていないだけかもしれません
が、Implements ステートメントをヘルプで調べてみてください。
Implements ステートメントはインターフェイスを継承するだけ
なので、実装は結局クラス個別に行う必要があります。とは言え、
インターフェイスが継承される (型が強制される) ことだけでも、
多態性の観点からは非常に大きな意味がありますが。

それでは。

3 hits

【63733】VBAにおけるクラスの擬似承継 みそじのおじさん 09/12/4(金) 18:13 質問
【63734】1だけ YU-TANG 09/12/5(土) 20:30 回答
【63738】Re:1だけ みそじのおじさん 09/12/6(日) 13:30 お礼

18440 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free