VB.NET 宣言のまとめ - Public Protected Private Static などを正しく使う

VB.NETを使用して宣言の解説

宣言とは

VB.NETでは、クラス・関数・変数・定数を定義するときに、Public・Protected Friend・Protected・Friend・Private・Static・Shared・Dimの宣言を行います。
またこの他にも、Using・Catch・LINQを使用することもあります。
どれを用いるかによって、定義したものの有効範囲、寿命が変わってきます。

そのため、異なるクラスから参照する場合、同じクラスから参照する場合、派生クラスから参照する場合などに、適した指定を正しく行う必要があります。

適用範囲

よく使われる宣言の参照できる範囲は以下のようになります。

同じプロジェクト 異なるプロジェクト
他クラス 派生クラス 同じクラス 他クラス 派生クラス
Public
Protected Friend ×
Protected × ×
Friend × ×
Private × × × ×

public はどこからでも参照できますが、private は同じプロジェクトの同じクラスからしか参照できないですね。
派生クラスとは、あるクラスを継承して作られた新しいクラスです。

このように、どの範囲で使用されるかによって正しく設定してやる必要があります。
正しく設定して、分かりやすくバグの少ないプログラミングを心がけましょう。

継承

継承についても少しみていきましょう。
まず、基本クラスを作成してみます。
継承元の基本クラスを作成する際には、MustInheritを指定します。


Public MustInherit Class Class1
  Public MustOverride Sub Sample()
End Class

こんな感じです。

MustInheritキーワードは、このクラスのインスタンスを作成することができないことを示しています。
そのため、このクラスを継承したクラスをインスタンス化して使用する必要があります。

また、MustOverrideキーワードでメソッドを定義していますが、これは必ず継承したクラスでオーバーライドをしなければいけないということです。
現在は中身がないので当たり前だとは思いますが、かならず継承により内容を与えなければ使うことはできません。

次に派生クラスを作成します。


Public Class Class2
  Inherits Class1
  Public Overrides Sub Sample()
    Trace.WriteLine("test")
  End Sub
End Class

Inherits を使用して基本クラスを指定します。
また、Overridesを使用して、先ほど「MustOverride」を使用して作成したメソッドをオーバーライドしています。

こんな感じで、カプセル化して使いやすいソースにしていきます。

まとめ

私がプログラムを学び始めたころは、「全部publicで定義すればよいじゃん!」と思っていました。 (実際そうしていましたw)

適当に定義して、継承やカプセル化も行わずにプログラミングしても、その場では一応作り上げることはできます。
しかし、後からいろいろ問題がでてきます。
拡張していく中でソースが肥大化していき、とてもみにくくバグの生まれやすいソースが完成しちゃいます。

そうならないよう、その場限りの対応ではなく後々を考えたプログラムを組むよう心がけましょう。
その第一歩が、正しく宣言を設定することなのではないでしょうか。

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る