○オブジェクト指向関連
overloads
・・・同じメソッド名を複数作成することができる。
このキーワードをつけなくてもオーバーロードしたメソッドは定義できるが、
可読性を考え付与したほうがよい。
shared
・・・インスタンスを作成してなくても呼び出し可能なメソッドを定義する。
以下、使用例
Share.vb
Public Class Share Public Shared Function getMessage() Return "Shareクラス" End Function End Class
Form1.vb (テスト用ドライバ)
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'インスタンスを作成せずに呼び出し Console.WriteLine(Share.getMessage()) End Sub End Class
Overrides、Shadows
・・・どちらもオーバーライドする役割を持つが、Baseクラスで実行した場合は動作が異なる。
ShadowではBaseクラスで実行したときオーバーライドされない。
以下、実験結果。
BaseClass.vb (継承元となるクラス)
Public Class BaseClass Public Overridable Function getMessage() Return "Baseクラス" End Function End Class
OverRide.vb
Public Class OverRide Inherits BaseClass Public Overrides Function getMessage() Return "OverRideクラス" End Function End Class
Shadow.vb
Public Class Shadow Inherits BaseClass Public Shadows Function getMessage() Return "Shadowクラス" End Function End Class
Form1.vb (テスト用ドライバ)
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '普通に実行した場合 Dim clsOverRide1 As New OverRide Dim clsShadow1 As New Shadow Console.WriteLine(clsOverRide1.getMessage) '出力結果 "OverRideクラス" Console.WriteLine(clsShadow1.getMessage) '出力結果 "Shadowクラス" ←Shadowsのメソッドが動作している 'Baseクラスに継承したクラスをセット Dim clsOverRide2 As BaseClass = New OverRide Dim clsShadow2 As BaseClass = New Shadow Console.WriteLine(clsOverRide2.getMessage) '出力結果 "OverRideクラス" Console.WriteLine(clsShadow2.getMessage) '出力結果 "Baseクラス" ←Shadowsのメソッドが動作していない End Sub End Class
○アクセスビリティ
Public
・・・どこからでも参照可能
Private
・・・他からの参照不可
Protected
・・・派生クラスから参照が可能
Friend
・・・同じプロジェクト内で参照可能
Protected Friend
・・・Protected + Friend
○メモ
Optional
・・・引数の省略可能。ただしVB.NETの機能でC#には無い。
サンプルコードの動作確認環境
VS2005
.NetFrameWork 2.0