用两种可能的输入数据类型编写一个子/函数的任何方法

时间:2017-12-19 14:17:30

标签: .net vb.net oop methods overloading

我正在使用VB.Net在Visual Studio 2015中工作。我知道重载一个子/函数,这可能是我的问题的答案,但我想知道是否有更简洁的方法来处理这个问题。

我正在做一些游戏设计测试,我已经制作了两个类,它们共享一些相同类型的变量。 (HP,MP,攻击,防御等)我将有一个sub将接收一个玩家并修改其中一些统计数据。我也将为敌人类提供相同的潜艇。潜艇将完全相同,因为他们正在处理共享统计数据,所以他们会排队。

我的整体问题不是为播放器类编写一个子类来修改它们,而是通过复制它并将传入的变量类型更改为敌人来重载它,有没有办法写一次sub并在标题中指示可以有两种不同的类型,但只有一种可以接受吗?

现在我的标题看起来像这样

Sub round(ByRef x as player)

Sub round(ByRef x as enemy)

有没有办法只有一个带有标题的子

Sub round(ByRef x as player Or enemy)

我已经尝试过上面的代码,但它不起作用。我甚至不确定这是可能的。我最好的选择是超载潜艇吗?感谢。

1 个答案:

答案 0 :(得分:4)

你提到潜艇将是相同的 - 并且你的玩家和敌人类有(某些)相同的属性,他们都共享。这听起来像这些类的理想情况

  1. 从某些提供共享属性的基类型(例如“GameCharacter”或其他东西)继承,
  2. 或者

    1. 都实现了定义这些属性的接口。
    2. 哪个更合适可能取决于你的具体情况,但在任何一种情况下,你只需要在你的Sub中接受基类/接口类型的实例,然后你只需要它的一个副本,例如< / p>

      Sub round(ByRef x As GameCharacter) 'base class
      

      Sub round(ByRef x As IGameCharacter) 'interface definition