zoukankan      html  css  js  c++  java
  • 为什么要定义那么多接口?

    主角是一个单独的类,这里我们主要用怪物说明接口的用法:

    怪物有很多种, 按地域分:有的在天上飞,有的在地上跑,有的在水里游

    按攻击方式分:有的能近距离物理攻击,有的能远距离射击

    假设游戏里需要这样的几种怪—— 野狗:地上移动,近距离攻击

     黑熊:地上移动,近/远距离攻击

    秃鹫:地上/天上移动,远距离攻击

     食人鱼:水中移动,近距离攻击

     鳄鱼:地上/水中移动,近距离攻击 显然,如果我们将每一种怪物定义为一个类,那就不是面向对象的程序开发了,我们应当使用接口:

    interface OnEarth{//陆地接口 int earthSpeed;//陆地移动速度 void earthMove();//陆地移动方法 }

    interface OnWater{//水中接口 int waterSpeed;//水中移动速度 void waterMove();//水中移动方法 }

    interface OnAir{//空中接口 int airSpeed;//水中移动速度 void airMove();//水中移动方法 }

    interface NearAttack{//近距离攻击接口 int nearAttackPower;//近距离攻击力 void nearAttack();//近距离攻击方法 }

    interface FarAttack{//远距离攻击接口 int farAttackPower;//远距离攻击力 void farAttack();//远距离攻击方法 }

    这样一来,根据需求,我们可以选择性的继承接口:

    //野狗类
    class Tyke implements OnEarth, NearAttack{
    earthMove():void {//实现继承的方法1 }
    nearAttack():void {//实现继承的方法2 }
    }
    //黑熊类
    class BlackBear implements OnEarth, NearAttack, FarAttac{
    earthMove():void {//实现继承的方法1 }
    narAttack():void {//实现继承的方法2 }
      farAttack():void {//实现继承的方法3 }

    }
    //秃鹫类
    class Vulture implements OnEarth, OnAir, FarAttack{
    earthMove():void {//实现继承的方法1 }
    airMove():void{//实现继承的方法2 }
    void farAttack(){//实现继承的方法3 }
    }

    //食人鱼类
    class ManeatFish implements OnWater, NearAttack{
    waterMove():void{//实现继承的方法1 }
    nearAttack():void {//实现继承的方法2 }
    }
    //鳄鱼类
    class Crocodile implements OnEarth, OnWater, NearAttack{
    earthMove():void{//实现继承的方法1 }
    waterMove():void {//实现继承的方法2 }
    nearAttack():void {//实现继承的方法3 }
    }

    (AS3接口中不支持定义变量,)
     在实现接口方法的同时,也拥有了接口中定义的成员变量,这样就构成了一个有机的整体,使整个程序既体现了类的多样性,又不失结构组合的灵活性,且需要在某个特性增加其他功能,只要修改接口就可以了,其继承的类自动修改。

  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/xcai/p/2355491.html
Copyright © 2011-2022 走看看