# Classes

A class groups different functions, methods, variables, and properties, which are called its members. A class encapsulates the members, which can be accessed by an instance of the class, called an object. Classes are extremely useful for the programmer, as they make the task convenient and fast, with characteristics such as modularity, re-usability, maintainability, and readability of the code.

Classes are the building blocks of object-oriented programming languages.

# Abstract Classes

If classes share common functionality you can group this in a base or abstract class. Abstract classes can contain partial or no implementation at all and allow the derived type to override the base implementation.

Abstract classes within VisualBasic.NET must be declared as MustInherit and cannot be instantiated.

Public MustInherit Class Vehicle
     Private Property _numberOfWheels As Integer
     Private Property _engineSize As Integer

     Public Sub New(engineSize As Integer, wheels As Integer)
         _numberOfWheels = wheels
         _engineSize = engineSize
     End Sub

     Public Function DisplayWheelCount() As Integer
         Return _numberOfWheels
     End Function
End Class

A sub type can then inherit this abstract class as shown below:

Public Class Car
    Inherits Vehicle
End Class

Car will inherit all of the declared types within vehicle, but can only access them based upon the underlying access modifier.

Dim car As New Car()
car.DisplayWheelCount()

In the above example a new Car instance is created. The DisplayWheelCount() method is then invoked which will call the base class Vehicles implementation.

# Creating classes

Classes provide a way of creating your own types within the .NET framework. Within a class definition you may include the following:

  • Fields
  • Properties
  • Methods
  • Constructors
  • Events

To declare a class you use the following syntax:

Public Class Vehicle     
End Class

Other .NET types can be encapsulated within the class and exposed accordingly, as shown below:

Public Class Vehicle
     Private Property _numberOfWheels As Integer
     Private Property _engineSize As Integer

     Public Sub New(engineSize As Integer, wheels As Integer)
         _numberOfWheels = wheels
         _engineSize = engineSize
     End Sub

     Public Function DisplayWheelCount() As Integer
         Return _numberOfWheels
     End Function
End Class