以下の内容は管理人個人の理解解釈なので、勘違い間違いがあるかも。
参考にしてください。
VB20005のクラスは大きく分けて3種類といえます。
通常のクラス=今までVB6で扱え、作成できたクラスと同じ。「0から始める、たたき上げのクラス」
継承クラス=継承もとのクラスの機能を引き継いで実装できるクラス。言ってみれば「親の七光りクラス」ですか。
インターフェイス=クラスの設計図。最低限の決まりを箇条書きにしたもの。言ってみれば「家訓」かな?
アドバイスだけはもらうが、後は自分でゴリゴリやっていくスタイルですね。
初めの一つは Form1のクラスで簡単に見ることができる。フォームを作成すると作られます。
Form1.vbファイルは
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
となっています。単純そのものです。VB6でもおなじみのクラスと同じです。
インスタンスを作成して使用します。
ここではForm1のクラスですが、「Public Class NewMakeFile~」など自分で新しいクラスを作成することもできます。
別のファイルForm1.Designer.vbでは
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Windows フォーム デザイナで必要です。
Private components As System.ComponentModel.IContainer
'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
'Windows フォーム デザイナを使用して変更できます。
'コード エディタを使って変更しないでください。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.SuspendLayout()
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
End Class
となっています。
いきなり聞いたことがない、InheritsだとかPartialがでてきて分かりませんが
実はこれが二つ目の「継承クラス」です。
「Inherits System.Windows.Forms.Form」のInheritsは、継承というキーワードです。
この場合「Form1クラスは、System.Windows.Forms.Formクラスを継承しています。」という意味になります。
継承すると何ができるのかというと、継承元のメッソッド、プロパティー、イベントなどのクラスの要素を
そのまま実装できます。ただし継承元のクラスでFriendで宣言されている機能などは継承先では使えません(詳しくはこちら)。
「Partial」=クラスを分割して書く事ができるようにするためのキーワードです。要するにForm1のクラスを
二つに分けて書かれている、そのように書くためのキーワードです。MSの例で
次の例では、クラス sampleClass の定義を 2 つの宣言に分割し、それぞれの部分で別の Sub プロシージャを定義します。
Partial Public Class sampleClass
Public Sub sub1()
End Sub
End Class
Partial Public Class sampleClass
Public Sub sub2()
End Sub
End Class
というのがあります。
普通のクラスと、継承クラスの2つを説明しました。
もう一つ、インターフェイスというもがあります。
これはクラスの設計図みたいなものです。
例
Public Interface クラスの設計図
Sub VBMsg(ByVal moji As String)
End Interface
Public Class クラスの設計図の具体
Implements クラスの設計図
Public Sub VBMsg(ByVal moji As String) Implements クラスの設計図.VBMsg
MessageBox.Show(moji, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
End Class
「クラスの設計図」というインターフェイスを具体化した「クラスの設計図の具体」クラスは
Implements クラスの設計図
という一行を書き
Public Sub VBMsg(ByVal moji As String) Implements クラスの設計図.VBMsg
End Sub
のルーチンを実装する必要があります。
「継承クラス」の継承元は一つに限られますが、インターフェイスを利用すると多くのアドバイスがもらえる(多くのインターフェイスを実装できる)という利点があります。
蛇足でもう一つ。
「クラスはインスタンスを作成しないとその中のルーチンは呼び出せない。」というお決まりがありますが
世の中無法者がいるもので、「Shared」キーワードが付いたメッソッドはインスタンス無しに呼び出せてしまいます。
要するにVB6で言うところの標準モジュール内のメソッドと同じ扱いになります。
無法者なので扱いには気をつけたほうがよさそうです。
|