• Chicken的代码解剖:5 UDN的interface


      接口interface的知识在这一部分研究中尤为重要,因为接口实现了鸡链系统。对了 可能还牵扯到一些积分系统,让我们看看这一章中的内容。

    接口可以被当做一种类来看待,他声明了子类中继承和要实现的内容。我们就以UDN中的接口文章来讲解这一章。

    interface IWeapon;
    
    const FireRate=0.05;
    const FireCounter=3;
    
    function bool PrimaryFire(float Rate);
    function bool SecondFire(int Counter);

      上边是一个武器类的接口,所有的武器类都得实现这个接口。里面有常量和函数,他约束了武器的一般行为。

    pistol,机枪MachineGun,还是狙击SniperRifle。这些枪都有开火的一般行为和一些法定频率等属性。

    关于接口的实现如下:

    class Pistol extends UTWeapon implements(IWeapon);
    
    function bool PrimaryFire(flaot Rate)
    {
         if(Rate>class'IWeapon'.const.FireRate)
          return true;
    
          return false;
    }
    
    function bool SecondFire(int Counter)
    {
        if(Counter<class'IWeapon'.const.FireCounter)
           return true;
    
           return false;
    }

    可以看到上边实现了接口中的内容,而且不用再重新定义常量。
          这样做有一个好处,当我们的接口函数在实现的时候如果出错,编译器将会很快的告诉我们是接口实现出了问题。接口能让我们把一些类的一般属性都实现了,尽管每个类关于接口的函数实现都有各自的功能。但对外都是一致的,这就像USB一样。打印机,键盘,鼠标。

         当然,接口也是可以继承的,前面的狙击枪SniperRifle。

    Interface IZoomWeapon extends IWeapon;
    
    function bool ZoomedFire(flaot Rate,int FOV);

        我们看一看狙击枪是怎么实现继承接口的。

    class SniperRifle extends UTWeapon implements(IZoomedWeapon);
    
    function bool PrimaryFire(float Rate)
    {
         if(Rate>class'IWeapon'.const.FireRate)
         Rate=class'IWeapon'.const.FireRate;
    
         return false;
    }
    
    
    function bool SecondFire(int FireCount)
    {
         if(Rate>class'IWeapon'.const.FireCount)
         Counter=class'IWeapon'.const.FireCount;
    
         return false;
    }
    
    function bool ZoomedFire(float Rate,int FOV)
    {
        return false;
    }

          每个类都要实现接口中的声明函数。

      一个UDN中提到的很好问题,也许你觉得接口就是一种类,为什么多此一举?其实接口有自己的长处,当你在做子类的时候,你将一个函数拼错,编译器可能不会出错。但接口可以防止这种事件的发声。

      尽管这样,接口还是很抽象,我们接下来学习Chicken中的接口。

        

  • 相关阅读:
    javascript获取url地址问好后面的值,包括问号
    给Object扩展新方法
    关于hasOwnProperty()方法的应用
    javascript if 与 if else 的一点小认识
    express中路由设置的坑-----1
    javascript数组顺序-----1冒泡的另一种比较好理解的写法
    进程的控制与状态细化
    进程的定义与控制
    进程的定义与控制
    进程引入
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/2765304.html
Copyright © 2020-2023  润新知