Overiding methods help needed
BlitzMax Forums/BlitzMax Beginners Area/Overiding methods help needed
| ||
Can anyone please provide me with a very simple example of how you overide methods and the benefits of doing so as I am having lots of problems trying to figure it out. Any advice would be great. Jason. |
| ||
You can not overwrite methods other than redefine them with the exactly same type header. so if the original was: Update(timedif:float) then the one on the extended type must be Update(xxx:float) as well you can not remove that nor add something else. nor can you define 2 different versions of update. |
| ||
I'm not sure if this is a good way to do it but I just had this idea of a way in which you could use overridden methods. You have a base vehicle type which is abstract. That means you cannot make an actual vehicle - it is a template. A vehicle variable can accept any type that extends from it. Here we have smallship and largeship. Each ship has a different upgrade method, and you would put any actions unique to a type of ship in its own type. Only common actions are placed in vehicle. Type vehicle Abstract Method upgrade:vehicle() Abstract Method move() 'assuming all vehicles move in the same way put common code in this type End Method End Type Type smallship Extends vehicle Method upgrade:vehicle() Local newvehicle:vehicle = New largeship Return newvehicle End Method End Type Type largeship Extends vehicle Method upgrade:vehicle() Local newvehicle:vehicle = New nextship Return newvehicle End Method End Type ''''''''' Local player:vehicle = New smallship player = player.upgrade() 'now a bigship |