Define Abstract Class and Reference Class by it : Abstract Class « Class « VB.Net






Define Abstract Class and Reference Class by it

Define Abstract Class and Reference Class by it
Imports System

Public Class MainClass

  Shared Sub Main()
    Dim tom As New Employee("Tom", 50000, "111-11-1234")
    Dim sally As New Employee("Sally", 150000, "111-11-2234")

    Dim ourEmployees(1) As PayableEntity
    ourEmployees(0) = tom
    ourEmployees(1) = sally
    Dim anEmployee As PayableEntity
    For Each anEmployee In ourEmployees
      Console.WriteLine(anEmployee.TheName & " has tax id " & anEmployee.TaxID )
    Next

  End Sub
End Class

Public MustInherit Class PayableEntity
  Private m_Name As String
  Public Sub New(ByVal itsName As String)
    m_Name = itsName
  End Sub
  ReadOnly Property TheName() As String
    Get
      Return m_Name
    End Get
  End Property
  Public MustOverride Property TaxID() As String
End Class

Public Class Employee
  Inherits PayableEntity
  Private m_Salary As Decimal
  Private m_TaxID As String
  Private Const LIMIT As Decimal = 0.1D
  Public Sub New(ByVal theName As String, ByVal curSalary As Decimal, ByVal TaxID As String)
    MyBase.New(theName)
    m_Salary = curSalary
    m_TaxID = TaxID
  End Sub
  Public Overrides Property TaxID() As String
    Get
      Return m_TaxID
    End Get
    Set(ByVal Value As String)
        m_TaxID = Value
    End Set
  End Property
  ReadOnly Property Salary() As Decimal
    Get
      Return MyClass.m_Salary
    End Get
  End Property
  Public Overridable Overloads Sub RaiseSalary(ByVal Percent As Decimal)
    If Percent > LIMIT Then
      'not allowed
      Console.WriteLine("Percent > LIMIT")
    Else
      m_Salary = (1D + Percent) * m_Salary
    End If
  End Sub
  Public Overridable Overloads Sub RaiseSalary(ByVal Percent As _
  Decimal, ByVal Password As String)
    If Password = "special" Then
      m_Salary = (1D + Percent) * m_Salary
    End If
  End Sub
End Class


           
       








Related examples in the same category

1.Abstract (MustInherit) Class Abstract (MustInherit) Class