PolyMorphism At Work : Polymorphism « Class « VB.Net






PolyMorphism At Work

PolyMorphism At Work
Imports System
Imports System.Collections


Public Class MainClass

  Shared Sub Main()
     Dim e1 As New Employee("Employee", 5)
     Dim e2 As New Programmer("Programmer", 15)
     Dim e3 As New Archictect("Archictect", 15)
     Dim ourEmployees(2) As Employee
    
     ourEmployees(0) = e1
     ourEmployees(1) = e2
     ourEmployees(2) = e3
    
     Dim anEmployee As Employee
     For Each anEmployee In ourEmployees
       anEmployee.RaiseSalary(0.1D)
       Console.WriteLine(anEmployee.TheName & " salary now is " & anEmployee.Salary())
    Next
  End Sub
  
End Class

Public Class Employee
  Private m_Name As String
  Private m_Salary As Decimal

  Public Sub New(ByVal theName As String, ByVal curSalary As Decimal)
    m_Name = TheName
    m_Salary = curSalary
  End Sub

  Public ReadOnly Property TheName() As String
    Get
      Return m_Name
    End Get
  End Property

  Public ReadOnly Property Salary() As Decimal
    Get
      Return MyClass.m_Salary
    End Get
  End Property

  Public Overridable Overloads Sub RaiseSalary(ByVal Percent As Decimal)
      m_Salary = (1 + Percent) * m_Salary
  End Sub

End Class

Public Class Programmer
  Inherits Employee
  Public Sub New(ByVal theName As String, ByVal curSalary As Decimal)
    MyBase.New(theName, curSalary)
  End Sub

  Public Overloads Overrides Sub RaiseSalary(ByVal Percent As Decimal)
    MyBase.RaiseSalary(1.2D * Percent)
  End Sub
End Class

Public Class Archictect
    Inherits Programmer
    Public Sub New(ByVal theName As String, ByVal curSalary As Decimal)
        MyBase.New(theName, curSalary)
    End Sub

    Public Overloads Overrides Sub RaiseSalary(ByVal Percent As Decimal)
        MyBase.RaiseSalary(2D * Percent)
    End Sub
End Class



           
       








Related examples in the same category

1.Demonstrate polymorphism in Point-Circle-Cylinder hierarchyDemonstrate polymorphism in Point-Circle-Cylinder hierarchy