接口interface::比想象的更重要

Posted on 2013-03-04 11:52  neocsl  阅读(240)  评论(0编辑  收藏  举报

  在进行游戏编程的时候,有许多类中的函数名都会撞车,我会在不同枪支下声明一个开火函数,我会在敌人函数中声明一个MeleeAttack函数,但是不同类中的函数实现过程却是不同的。

  例如普通僵尸会挥舞爪子,而更牛逼一点的士兵会使用武器攻击。

class Zombie extends Pawn;

function MeleeAttack()
{
   近战攻击
}

class Soilder extends Pawn;

function MeleeAttack()
{
   拿武器攻击,不同武器攻击方式不同
}

  既然使用接口来实现这些,接口当然要给这些内容提供一个统一的标准。电源插座,USB。

  接口为接下来的类提供了统一的函数标准,例如所有枪支的开火函数,实现接口PrimaryFire。接口会强制这些实现接口类实现必要的函数,否则编译器就会报错,这对于错误检查真是把双刃剑。

2.接口实例

  接口将需要统一实现的内容,束在一起,就像集线器一样,当然他不能实例化内存

Iterface Enemy;

const Damge=20;      //伤害值
const AnimRate=0.2;   //攻击频率

function MeleeAttack(float AnimRate);
function TakeDamage(int Damage);

   实现接口

class Goblin extends Pawn implements(Enemy);

function MeleeAttack(float Rate)
{
    if(Rate>class'Enemy'.const.AnimRate)
    {
         DoAnim(Rate);
    }
}

  如果我在Goblin中没有实现TakeDamage(int Damage)函数,将会出现华丽的报错。