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