zoukankan      html  css  js  c++  java
  • 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中的接口。

        

  • 相关阅读:
    第01组 Beta冲刺(1/5)
    2019 SDN上机第6次作业
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    USDT钱包对接交易所 寻找最便捷的USDT充提币API接口文档
    EOS区块链钱包开发教程
    XRP钱包对接教程
    usdt钱包如何跟交易所对接?
    BTC_ETH_USDT_自动充提币API接口,钱包对接交易所教程!
    BTC bitcoin-cli转账及交易的API使用教程
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/2765304.html
Copyright © 2011-2022 走看看