is 演算子はインターフェイスにも有効
あるインスタンスが特定のクラス(または、そのサブクラス)かどうかを判定するには is 演算子を使います。このとき、インターフェイスを実装したクラスでは、そのインターフェイスも比較対象に指定できます。
以下、サンプル。次のようなクラスを考えます。
- Charactor
- Fighter extends Charactor
- Mage extends Charactor
- Healer extends Charactor
一般的な RPG の職業とでもお考えください。体力や愛、魅力などの基礎的な値を持つ Charactor クラスを拡張して、職業を作っていきます。このとき Mage と Healer は魔法使いと僧侶です。
魔法が使えない魔法使いと僧侶など役に立たないので魔法を使う特性を与えるとして、親クラスはすでに存在するのでインターフェイスを採用します。名前は Magic とでもしましょう。
- Charactor
- Fighter extends Charactor
- Mage extends Charactor implements Magic
- Healer extends Charactor implements Magic
このとき、魔法を使えるクラスを判定するとしたら is 演算子で以下のように指定できます。
var obj:Object = new Mage(); trace(obj is Magic);
actionscript3 のインターフェイスは制限が大きくて使いづらいと思っていましたが、こうした使い方ができるのは便利ですね。
なお、上のような方法で RPG を実際に作って大変な目にあったとしても私は責任を負いませんのであしからず。