Schnittstellen

Abgeschlossen

Eine Schnittstelle ist eine Spezifikation für einen Satz öffentlicher Instanzmethoden. Eine Schnittstelle definiert und erzwingt Ähnlichkeiten zwischen nicht verwandten Klassen, ohne dass eine Klasse von der anderen abgeleitet werden muss. Alle Schnittstellen sind öffentlich, auch wenn Sie das Schlüsselwort public dem Schlüsselwort interface im Code classDeclaration nicht explizit voranstellen. Die Methoden auf einer Schnittstelle sind ebenfalls öffentlich.

Um eine Schnittstelle zu erstellen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt. Wählen Sie anschließend Hinzufügen aus.
  2. Wählen Sie im Dialogfeld Neues Element die Option Schnittstelle aus. Geben Sie anschließend einen Namen für die Schnittstelle ein.
  3. Wählen Sie Hinzufügen aus.

Wenn Sie das Schlüsselwort implements in einer Klassendeklaration hinzufügen, muss die Klasse die Methoden deklarieren, die von der Schnittstelle angegeben werden. Eine Klassendeklaration kann mehrere Schnittstellen implementieren. Listen Sie die Schnittstellen nach der einmaligen Verwendung des Schlüsselworts implements auf, und trennen Sie die Schnittstellennamen durch Kommas. Alle von einer Klasse implementierten Schnittstellenmethoden müssen explizit als public deklariert werden. Hierzu verwenden Sie das Schlüsselwort public in der Klasse. Eine Klasse, die eine Schnittstelle implementiert, muss ebenfalls als public deklariert werden. Eine Schnittstelle kann eine andere Schnittstelle durch Verwendung des Schlüsselworts extends erweitern. Eine Schnittstelle kann jedoch nicht mehr als eine Schnittstelle erweitern.

Schnittstellenbeispiel

Im folgenden Beispiel implementiert die Klasse Automobile IDrivable als Schnittstelle. Das Schlüsselwort is wird unterstützt und ermöglicht Ihnen, zu testen, ob eine Klasse eine Schnittstelle implementiert.

public interface IDrivable
{
    public int getSpeed()
     {
     }

    public void setSpeed(int newSpeed)
     {
     }
}
class Automobile implements IDrivable
 {
   int m_speed;

   public int getSpeed()
    {
         return m_speed;
    }

   public void setSpeed(int newSpeed)
    {
         m_speed = newSpeed;
    }
 }
class UseAnAutomobile
 {
   void DriveAutomobile()
    {
       IDrivable yourIDrivable;
       Automobile myAutomobile;
       str sTemp = "object is not an IDrivable";
	
       myAutomobile = new Automobile();

       if (myAutomobile is IDrivable)
       {
          yourIDrivable = myAutomobile;
          yourIDrivable.setSpeed(42);
          sTemp = int2str(yourIDrivable.getSpeed());
       }

       Global::info(sTemp);
       return;
    }
}