VBの仕事をしていたのですが、VB.NETの仕事が来たので試行錯誤しながらやっているのですが、継承、オーバーライドの概念がどうしても理解できません。良いアドバイス、サイトがあれば教えてください。自分なりに調べてみたのですがいまいちピンときません。よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2010/09/15 01:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rsc96074 No.4

回答回数4504ベストアンサー獲得回数437

ポイント28pt

 こちらは参考になるでしょうか。急がば回れといいますが、Javaの方が分かりやすいかも。メソッド(Cで言うところの関数)の引数構成が同じときは「オーバーライド」で、引数構成が異なるときは「オーバーロード」。

●Javaの道:クラス(8.オーバーライドとオーバーロード)

オーバーライドとは、スーパークラスで定義されたメソッドをサブクラスで再定義することを言います。

オーバーライドする側はオーバーライドされる側と戻り型、インスタンスメソッド名、引数型、引数の数が同じでなければなりません。どれか一つでも異なる場合はオーバーライドとは見なされません。

http://www.javaroad.jp/java_class8.htm

 ちなみに、メンバーとは、Cで言うと変数に当たります。また、メソッドは、Cで言うと関数になります。

●オーバーロードとオーバーライド - プログラミングスレまとめ in VIP

親クラス(スーパークラス)で定義されたメソッドを、子クラス(サブクラス?)で再定義するテクニック。再定義などと呼ぶ。

これもポリモーフィズムを実現するためのテクニックとしてよく用いられる。

http://vipprog.net/wiki/%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%...

 それから、コメント欄を開けておくと、補足などをしてもらえてお得です。

※参考URL

●Visual Basic 中級講座 - ポリモーフィズム

http://homepage1.nifty.com/rucio/main/VBdotNet/Advance/Advance2o...

●Chapter 10 継承とポリモーフィズム - @IT

http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_10/vbnet2_10_...

●明快入門 Visual Basic 2008 ビギナー編 (林晴比古実用マスターシリーズ) [大型本] 林 晴比古 (著)

明快入門 Visual Basic 2008 ビギナー編 (林晴比古実用マスターシリーズ)

明快入門 Visual Basic 2008 ビギナー編 (林晴比古実用マスターシリーズ)

  • 作者: 林 晴比古
  • 出版社/メーカー: ソフトバンククリエイティブ
  • メディア: 大型本

id:KAIHATSU

再定義するとは継承元(スーパークラス)のメソッドを再度CALLすると考えてよろしいのでしょうか?

2010/09/08 10:35:46

その他の回答8件)

id:vbdb No.1

回答回数46ベストアンサー獲得回数0

ポイント28pt

わかりません。

http://q.hatena.ne.jp/1283875322

id:LimgHT No.2

回答回数30ベストアンサー獲得回数10

ポイント28pt

@ITの「オブジェクト指向プログラミング超入門」ですが、

第4回「継承を使うために知っておくべきこと」は如何でしょうか。

http://www.atmarkit.co.jp/fdotnet/basics/oop_index/index.html

http://www.atmarkit.co.jp/fdotnet/basics/oop04/oop04_01.html

図があって分かりやすい方と思いますが。


継承は、クラスの全メンバーをコピペしてくることで、

オーバーライドは、一部だけ違うメンバーを上書きすることと思ってます。

id:KAIHATSU

メンバーとは何なのでしょうか?

2010/09/08 08:07:35
id:tasklight No.3

回答回数323ベストアンサー獲得回数40

ポイント28pt

Visual Basic 中学校の「継承の使用方法」に分かりやすく説明してあります。

id:rsc96074 No.4

回答回数4504ベストアンサー獲得回数437ここでベストアンサー

ポイント28pt

 こちらは参考になるでしょうか。急がば回れといいますが、Javaの方が分かりやすいかも。メソッド(Cで言うところの関数)の引数構成が同じときは「オーバーライド」で、引数構成が異なるときは「オーバーロード」。

●Javaの道:クラス(8.オーバーライドとオーバーロード)

オーバーライドとは、スーパークラスで定義されたメソッドをサブクラスで再定義することを言います。

オーバーライドする側はオーバーライドされる側と戻り型、インスタンスメソッド名、引数型、引数の数が同じでなければなりません。どれか一つでも異なる場合はオーバーライドとは見なされません。

http://www.javaroad.jp/java_class8.htm

 ちなみに、メンバーとは、Cで言うと変数に当たります。また、メソッドは、Cで言うと関数になります。

●オーバーロードとオーバーライド - プログラミングスレまとめ in VIP

親クラス(スーパークラス)で定義されたメソッドを、子クラス(サブクラス?)で再定義するテクニック。再定義などと呼ぶ。

これもポリモーフィズムを実現するためのテクニックとしてよく用いられる。

http://vipprog.net/wiki/%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%...

 それから、コメント欄を開けておくと、補足などをしてもらえてお得です。

※参考URL

●Visual Basic 中級講座 - ポリモーフィズム

http://homepage1.nifty.com/rucio/main/VBdotNet/Advance/Advance2o...

●Chapter 10 継承とポリモーフィズム - @IT

http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_10/vbnet2_10_...

●明快入門 Visual Basic 2008 ビギナー編 (林晴比古実用マスターシリーズ) [大型本] 林 晴比古 (著)

明快入門 Visual Basic 2008 ビギナー編 (林晴比古実用マスターシリーズ)

明快入門 Visual Basic 2008 ビギナー編 (林晴比古実用マスターシリーズ)

  • 作者: 林 晴比古
  • 出版社/メーカー: ソフトバンククリエイティブ
  • メディア: 大型本

id:KAIHATSU

再定義するとは継承元(スーパークラス)のメソッドを再度CALLすると考えてよろしいのでしょうか?

2010/09/08 10:35:46
id:smallzhu No.5

回答回数107ベストアンサー獲得回数0

(はてなにより削除しました)
id:yossiy7 No.7

回答回数778ベストアンサー獲得回数96

ポイント28pt

VBであれば、一番簡単な例はダイアログでしょう。

ダイアログクラスで簡単な画面を作るプログラムぐらいは既に作成されていると思います。その時点で、クラスの継承を使いこなしているのです。

ダイアログクラスを元に、いろいろ画面の上に部品を乗せて、アプリケーションを作っていると思います。

例えばOKボタンとかCANCELボタンを押すイベント関数は最初から作られていると思いますが、その中でもOKボタンを押してるっぽい関数を呼び出していると思います。

それが、継承元のクラスの関数です。その関数の中にはダイアログを閉じるプログラムが書かれています。

オーバーライドは、自分でOKとかCANCELの関数を作れば、それでもうオーバーライドです。

id:KAIHATSU

丁寧にありがとうございます。ピンと来ていないところはありますが、なんとなくわかってきました。

2010/09/13 01:54:03
id:simoke123 No.8

回答回数220ベストアンサー獲得回数0

(はてなにより削除しました)
id:simoke123 No.9

回答回数220ベストアンサー獲得回数0

(はてなにより削除しました)
  • id:LimgHT
    私が言うメンバーは、クラスの中で定義される全てです。
    VBではメンバー変数、メンバー関数、メンバ演算子、メンバ型など色々あります。
    継承というのは、そのすべての定義を受け継ぐことになります。
    .NETではオーバーライドはメンバ関数にのみ適応されます。

    こいう例を見て違いが分かれば合格かと思いますが、どうでしょうか?
    http://shinshu.fm/MHz/88.44/archives/0000033687.html

    余計かもしれませんが、
    VBは他の言語と用語や概念が異なるため、JavaとC++で勉強するのは混乱の元かと思います。
    ただ、.NETということで、C#は用語が異なるだけで、内容の食い違いはまだ少ないです。
  • id:rsc96074
     子クラスでそれぞれ違う動きをさせたいとか、継承元のメソッドを使いたくないから、オーバーライドするのかも。(^_^;
  • id:KAIHATSU
    みなさんありがとうございました
    大体わかってきました

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません