====== Method Overloading ======
Method Overloading is a concept that is not known in VO, but is implemented in the .NET runtime.
It means that you can define multiple methods with the same name in a class. The only difference is that the signature (the parameter list) is different. This is true also for constructors - you can define more than one constructor in a class.
An example:
class MyClass
method Foo( cString as string ) as string
return cString
method Foo( nInt as int ) as string
return nInt:ToString()
end class
The compiler is able to understand which method to use depending on the parameter type, so this code will use both of the methods:
local oClass as MyClass
oClass := MyClass{}
oClass:Foo( "Hi guys" )
oClass:Foo( 1234 )
Please note: a different return type is not a different signature, so this will not compile:
method Foo( cString as string ) as string
....
method Foo( cString as string ) as int
Of course this applies also to longer parameter lists. Here a sample piece of code that uses overloaded constructors and chains them:
class MyClass
protect _cFullName as string
constructor( cFullName as string )
_cFullName := cFullName
return
constructor( cSurname as string, cName as string )
super( cName + " " + cSurname )
return