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

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

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

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

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

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

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

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...

Rails devise で複数モデルの認証機能を実装

Rails devise で複数モデルを管理 概要 rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。 よく「d...
トップへ戻る