クラスは型です。この型を他の型 ( String
、Integer
、Date
、FileInfo
...) と同様に使用して、変数、パラメーター、プロパティ、および関数の戻り値の型を宣言できます。
少し例を挙げてみましょう:
Public Class Person
Public Property FirstName As String
Public Property LastName As String
Public Overridable Sub Print() 'I will explain Overridable later.
Console.WriteLine($"{FirstName} {LastName}")
End Sub
End Class
タイプの変数を宣言できるようになりましたPerson
Dim sue, pete As Person
Dim persons As List(Of Person)
sue = New Person()
sue.FirstName = "Susan"
sue.LastName = "Miller"
pete = New Person()
pete.FirstName = "Peter"
pete.LastName = "Smith"
persons = new List(Of Person)()
persons.Add(sue)
persons.Add(pete)
For Each person As Person In persons
person.Print()
Next
モジュールは静的ですが。つまり、モジュールに格納されたデータは 1 回だけ存在します。一方、モジュールを でインスタンス化する必要はないNew
ため、グローバル データの格納やグローバルに使用可能なメソッドによく使用されます。たとえば、人のリストをモジュールに保存できます。
しかし、クラスでできることは他にもたくさんあります。基本クラスからクラスを派生させることができます。この新しいクラスは基本クラスからすべてを継承し、さらに多くのものを追加できます。たとえば、Employee
からクラスを派生させることができますPerson
Public Class Employee
Inherits Person
Public Property Salary As Decimal
Public Overrides Sub Print
Console.WriteLine($"{FirstName} {LastName}, Salary = {Salary}")
End Sub
End Class
Overridable
キーワード in を使用すると、Person.Print
派生クラスでメソッドを再定義 (オーバーライド) できますPrint
。(クラス内の関数とサブはメソッドと呼ばれます。)
従業員は個人と互換性のある割り当てです。リストに従業員を追加できpersons
ます。これには、For Each ループを変更する必要はありません。つまり、 の呼び出しによりperson.Print()
、適切なメソッドが自動的に呼び出されますPrint
(最初のメソッドは「通常の」個人用、2 番目のメソッドは従業員用)。
Dim emp as Employee
emp = New Employee()
emp.FirstName = "Frank"
emp.LastName = "Taggart"
emp.Salary = 3500.00D
persons.Add(emp)
クラスについては、もっと多くのことが言えます。クラスで何ができるかについて、ある程度のアイデアが得られたことを願っています。
Visual Basic のオブジェクトとクラス、特に「クラスとモジュールの違い」セクションを参照してください。