VB.NETでのシャドウとオーバーライドの違い

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ VB.NETでのシャドウとオーバーライドの違い

まず、VB.NETは、本格的なオブジェクト指向言語です。

オブジェクト指向言語では、『継承』という機能があります。

たとえば、AクラスとBクラスがあって、何かの事情で合併することになりました。

その場合、新たに合併したCクラスをつくるのでなく、AクラスにBクラスが編入すると考えます。

これをオブジェクト指向的にいうと、AクラスはBクラスを継承したといいます。

しかし、AクラスとBクラスに同じ名前の、たとえばCメソッドがあると継承ができません。

そこで、BクラスのCメソッドを隠すシャドウキーワードをAクラスのCメソッドに与えます。

すると継承ができ、継承後は、隠されたBクラスのCメソッドは、呼び出せなくなります。

つぎに、このAクラスのインスタンスをBクラス型の変数に代入したとします。

すると、今度は逆にAクラスのCメソッドが隠れて、BクラスのCメソッドが呼び出せるようになるのです。

このときも、BクラスのCメソッドでなく、AクラスのCメソッドを呼び出したいときは、BクラスのCメソッドにOverridableキーワードを与え、AクラスのCメソッドにOverridesキーワードを与えます。

すると、Bクラス型の変数に代入してもAクラスのCメソッドを呼び出せるようになるのです。

まとめ、シャドウとオーバーライドの違いは、ある意味、クラスベースのメソッド入れ替えがシャドウで、インスタンスベースのメソッド入れ替えがオーバーライドといえるでしょう。

詳しくは、以下を熟読してください。

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。