Visual Basic 入門

継承とは

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、クラスを利用するうえで非常に重要な概念である継承について説明します。
06:36

字幕

このレッスンでは、クラスを利用する上で非常に重要な概念である継承について説明します。継承とは、あるクラスのメソッド、フィールド、プロパティをそのまま引き継いで新しくクラスを作成することです。引き継ぎ元のクラスを規定クラス、引き継ぎ先のクラスを派生クラスといいます。では実際に継承を行なってみましょう。始めにこちらのソースコードをご覧下さい。3行目から定義されているShape クラスにはPositionX, PositionY というフィールドがあり、PrintName, GetName, IsShape というメソッドが用意されています。この Shape クラスの継承を行なってみましょう。クラスの継承を行なうには、まず通常通りクラスの宣言をした後クラスの宣言文の次に Inherits,継承を行ないたい規定クラスの順に入力を行ないます。では実際にこの Shape クラスを継承したCircle クラスを使ってみましょう。クラスを継承した場合でも、従来と同様に使う事ができます。ここで 25 行目から始まるPrintShape 関数をご覧下さい。この関数では Shape クラスを引数と取り、この引数と取った Shape クラスに対して操作を行なっています。 継承を行なうことのメリットの1つは、規定クラスに対する操作を継承先の派生クラスに対しても行なえる、という点です。この PrintShape 関数は、操作を同様に行なうことができます。Shape クラスではなく、Circle クラスの bar に対しても実際に実行してみると、確かに実行されています。では継承先の Circle クラスに新しいメソッドを定義していきましょう。継承先のクラスであってもメソッド、フィールド、プロパティの定義は従来通り行なうことができ、そのまま従来通り呼び出す事ができます。では継承元にもともとあった関数を上書きするにはどうしたらいいでしょうか。この Shape クラスには3つの関数があり、PrintName という関数を呼ぶと、その中にある GetName という関数によって返される値を出力を行なっています。ではこの Circle クラスで GetName の返す値を変えたい場合はどうすればいいでしょうか。実際にそのまま定義を行なってみましょう。実際に定義を行なったのが、こちらのコードとなります。ではこれを実際に実行してみましょう。なお PrintName 関数は、この PrintShape 関数の中で呼び出しています。 実行結果を確認すると継承先で GetName 関数を書き換えてCircle としたにもかかわらず、Shape と表示されています。それはこの PrintName 関数は、もともと継承元にあった関数でこの関数が呼び出しているGetName は継承元の GetName であるからです。ではこの呼び出す先を継承先の関数にするにはどうしたらよいでしょうか。このような場合、オーバーライドというものを使います。まずその関数をオーバーライド可能とするためには継承元の関数に対して、Overridable というキーワードを付けます。次に継承先の関数に対して、Overrides というキーワードを付けてあげます。再度実行してみましょう。すると Shape クラスのインスタンスに対しては、Shape と表示されているのに対して、Circle クラスでは無事にOverride が行なわれ、Circle という値が表示されていることがわかります。これが関数の隠蔽とオーバーライドの違いです。ではここで規定クラスに新しく1つメソッドを追加してみましょう。例えば図形の面積を求めるGetArea 関数を定義してみましょう。 もちろんこのように Shape クラスでGetArea 関数を定義することはできますが、Shape クラスではまだ GetArea の計算はできません。しかし Shape クラスを継承するクラスに対して 、GetArea という関数は絶対に持たせたい、というケースもあるかと思います。そのような場合に使うのが、MustInherid キーワード、および MustOverrides キーワードです。これは一般に抽象メソッド、抽象クラスと呼ばれており必ず継承しなければ使えない、必ずオーバーライドしなければならない、ということを示しています。例えばこの GetArea を MustOverrideつまり必ずオーバーライドしなければいけない関数として定義するには、Public MustOverride Function とします。なおこの関数は Single 型を返すとしたいのでAs Single と定義しましょう。また MustOverride キーワードを持つ、関数を持つクラスは必ず MustInherit でなければなりません。そのため Public MustInherit Class と記述します。 このように記述することで、こn Shape クラスを実体化することはできなくなり、Shape クラスを実体化するには、必ずその Shape クラスを継承したクラスを作成する必要が出ます。では Circle クラスにもGetArea 関数を実装してみましょう。Circle クラスで GetArea 関数を実装するには、先程と同様にPublic Overrides Function GetAreaAs Single のように記述します。このように MustOverride およびMustInherit というキーワードを正しく使う事で、継承先のクラスが必ず持つ関数必ず持つフィールドというものを定義できるようになりました。従ってこの PrintShape 関数の中でも、GetArea という関数が使えるようになっているはずです。このレッスンでは、クラスを利用する上で非常に重要な概念である継承について説明しました。

Visual Basic 入門

Visual Basicはプログラミング初心者にも比較的親しみやすい構文を採用したプログラミング言語です。従来のデスクトップアプリから最新フレームワークを用いたアプリまで、簡単に幅広く開発できます。このコースでは基本的な文法やクラス・名前空間などのより高度な機能、LINQなどVisual Basicを使ううえで必要な知識をひと通り学びます。

2時間53分 (43 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
Visual Basic Visual Basic 2015
プラン加入者限定
発売日:2017年01月03日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。