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