Flash / Flex / ActionScript/Class/interface

Материал из Web эксперт
Перейти к: навигация, поиск

Creating Interfaces

   <source lang="java">

interface InterfaceName {

 // Interface code goes here.

}

interface IMessageSender {

 private var _msToSend:Message;  // Incorrect.

}

       </source>
   
  


Extends an interface

   <source lang="java">

interface ISender {

 public function send():void;

} interface IMessageSender extends ISender {

 public function setMessage(msObject:Message):void;

}

       </source>
   
  


Implement an Interface

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var srcInstance:ShapeContainer = new ShapeContainer(200, 200);
       
       var cirA:Circle = new Circle(0, 0, 50);
       var cirB:Circle = new Circle(0, 0, 400);
       var sqA:Square = new Square(0, 0, 100);
       var sqB:Square = new Square(0, 0, 200);
       
       var bAdded:Boolean;
       
       bAdded = srcInstance.addShape(cirA);
       trace(bAdded);
       bAdded = srcInstance.addShape(cirB);
       trace(bAdded);
       bAdded = srcInstance.addShape(sqA);
       trace(bAdded);
       bAdded = srcInstance.addShape(sqB);
       trace(bAdded);
   }
 }

} interface IShape {

 function getDimensions():Object;

} class Circle implements IShape{

 private var _nX:Number;
 private var _nY:Number;
 private var _nRadius:Number;
 public function Circle(nX:Number, nY:Number, nRadius:Number) {
   nX = nX;
   nY = nY;
   nRadius = nRadius;
 }
 public function getDimensions():Object {
   return {width: 2* _nRadius, height: 2  * _nRadius};
 }

} class Square implements IShape {

 private var _nX:Number;
 private var _nY:Number;
 private var _nSide:Number;
 public function Square(nX:Number, nY:Number, nSide:Number) {
   _nX = nX;
   nY = nY;
   nSide = nSide;
 }
 public function getDimensions():Object {
   return {width: _nSide, height: _nSide};
 }

} class ShapeContainer {

 private var _aShapes:Array;
 private var _nWidth:Number;
 private var _nHeight:Number;
 public function ShapeContainer(nWidth:Number, nHeight:Number) {
   _nWidth = nWidth;
   _nHeight = nHeight;
   _aShapes = new Array();
 }
 public function addShape(shObject:IShape):Boolean {
   if(shObject.getDimensions().height > _nHeight) {
     return false;
   }
   var nSum:Number = 0;
   for(var i:Number = 0; i < _aShapes.length; i++) {
     nSum += _aShapes[i].getDimensions().width;
   }
  
   if(nSum + shObject.getDimensions().width > _nWidth) {
     return false;
   }
   else {
     _aShapes.push(shObject);
     return true;
   }
   }

}

       </source>
   
  


Implementing an Interface

   <source lang="java">

class ClassName implements InterfaceName {

 // Class code goes here.

} class ClassName implements Interface1Name, Interface2Name, Interface3Name {

 // Class code goes here.

} class ClassName extends SuperClassName implements InterfaceName {

 // Class code goes here.

}

       </source>
   
  


Implement interface

   <source lang="java">

class Didgeridoo implements IProduct {

   private var _price:uint = 100;
   private var _name:String = "Handpainted Didgeridoo";
   private var _description:String = "Imported from Australia";
   public function get price():uint {
     return this._price;
   }
   public function set price(val:uint):void {
     this._price = val;
   }
   public function get name():String {
     return this._name;
   }
   public function set name(val:String):void {
     this._name = val;
   }
   public function get description():String {
     return this._description;
   }
   public function set description(val:String):void {
     this._description = val;
   }
 }
    

interface IProduct {

         function get price():uint;
         function set price(val:uint):void;
         function get name():String;
         function set name(val:String):void;
         function get description():String;
         function set description(val:String):void;

}

class TShirt implements IProduct {

   private var _price:uint = 20;
   private var _name:String = "T-Shirt";
   private var _description:String = "Made in China";
   public function get price():uint {
     return this._price;
   }
   public function set price(val:uint):void {
     this._price = val;
   }
   public function get name():String {
     return this._name;
   }
   public function set name(val:String):void {
     this._name = val;
   }
   public function get description():String {
     return this._description;
   }
   public function set description(val:String):void {
     this._description = val;
   }
 }
    
       </source>
   
  


Implement two interface

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
      var t:TShirt = new TShirt();
      trace(t.name);
       
       
   }
 }

} interface IClothing extends IProduct {

         function get color():String;
         function set color(val:String):void;
         function get size():String;
         function set size(val:String):void;
    }

interface ICustomizable {

         function get customPrint():String;
         function set customPrint(val:String):void;
    }

interface IProduct {

         function get price():uint;
         function set price(val:uint):void;
         function get name():String;
         function set name(val:String):void;
         function get description():String;
         function set description(val:String):void;
    }

class TShirt implements IClothing, ICustomizable {

   private var _price:uint = 20;
   private var _name:String = "T-Shirt";
   private var _description:String = "Made in China";
   private var _color:String = "black";
   private var _size:String = "XXL";
   private var _customPrint:String = "";
   public function get price():uint {
     return this._price;
   }
   public function set price(val:uint):void {
     this._price = val;
   }
   public function get name():String {
     return this._name;
   }
   public function set name(val:String):void {
     this._name = val;
   }
   public function get description():String {
     return this._description;
   }
   public function set description(val:String):void {
     this._description = val;
   }
   public function get color():String {
     return this._color;
   }
   public function set color(val:String):void {
     this._color = val;
   }
   public function get size():String {
     return this._size;
   }
   public function set size(val:String):void {
     this._size = val;
   }
   public function get customPrint():String {
     return this._customPrint;
   }
   public function set customPrint(val:String):void {
     this._customPrint = val;
   }
 }
       </source>
   
  


Interface Inheritance

   <source lang="java">

public interface IntA {

 function methodA ( ):void;

} public interface IntB extends IntA {

 function methodB ( ):void;

} public interface IntC {

 function methodC ( ):void;

} public interface IntD {

 function methodD ( ):void;

} public interface IntE extends IntC, IntD {

 function methodE ( ):void;

}

       </source>
   
  


Interface Syntax and Use

   <source lang="java">

interface SomeName {

 function method1 (param1:datatype,...paramn:datatype):returnType;
 function method2 (param1:datatype,...paramn:datatype):returnType;
 ...
 function methodn (param1:datatype,...paramn:datatype):returnType;

} class SomeName implements SomeInterface { } A class can legally implement more than one interface by separating interface names with commas. class SomeName implements SomeInterface, SomeOtherInterface { }

       </source>