# interface

#### Availability

Flash Player 6.

#### Usage

    interface InterfaceName {}
    interface InterfaceName [extends InterfaceName [, InterfaceName ...] {}

Note: To use this keyword, you must specify ActionScript 2 and Flash Player 6 or Flash Player 7 in the Flash tab of your FLA file's Publish Settings dialog box. This keyword is supported only when used in external script files, not in scripts written in the Actions panel.

#### Parameters

None.

#### Returns

Nothing.

#### Description

An interface is similar to a class, with the following important differences:

- Interfaces contain only declarations of methods, not their implementation. That is, every class that implements an interface must provide an implementation for each method defined in the interface.
- Only public members are allowed in an interface definition. In addition, instance variables are not permitted.

While interfaces are not equivalent to abstract classes in Java, you can think of them as abstract in the sense that they define only potential behaviors of their instances.

#### Example

    (in top-level package .as files Ia, B, C, Ib, D, Ic, E)

    // filename Ia.as
    interface Ia
    {
      function k():Number;         // method declaration only
      function n(x:Number):Number; // without implementation
    }
    // filename B.as
    class B implements Ia
    {
      function k():Number {return 25;}
      function n(x:Number):Number {return x+5;}
    }
    // external script or Actions panel
    mvar = new B();
    trace(B.k());   // 25
    trace(B.n(7)); // 12

    // filename c.as
    class C implements Ia
    {
      function k():Number {return 25;}
    } // error: class must implement all interface methods

    // filename Ib.as
    interface Ib
    {
      function o():Void;
    }
    class D implements Ia, Ib
    {
      function k():Number {return 15;}
      function n(x:Number):Number {return x*x;}
      function o():Void {trace("o");}
    }

    // external script or Actions panel
    mvar = new D();
    trace(D.k());   // 15
    trace(D.n(7));  // 49
    trace(D.o());   // "o"

    interface Ic extends Ia
    {
      function p():Void;
    }
    class E implements Ib, Ic
    {
      function k():Number {return 25;}
      function n(x:Number):Number {return x+5;}
      function o():Void {trace("o");}
      function p():Void {trace("p");}
    }

#### See also

`class`, `extends`, `implements`