Latest web development tutorials

Java-Schnittstelle

Schnittstelle (englisch: Interface), in der Programmiersprache Java ist eine abstrakte Art, ist eine Sammlung von abstrakten Methoden, Schnittstellen in der Regel eine Schnittstelle zu der Aussage. Eine Klasse-Interface-Modus Vererben, wodurch abstrakte Methoden Schnittstelle zu erben.

Die Schnittstelle ist keine Klasse, und die Klasse Ansatz zur Herstellung Schnittstelle ist sehr ähnlich, aber sie gehören zu verschiedenen Konzepte. Klasse beschreibt die Objekteigenschaften und Methoden. Methode Klasse zu implementieren die Schnittstelle enthält.

Es sei denn, die Umsetzung der Interface-Klasse ist abstrakt, oder auch die Klassenschnittstelle alle Methoden zu definieren.

Schnittstelle kann nicht instanziiert werden, aber es kann implementiert werden. Eine Klasse, die die Schnittstelle implementiert, werden alle in der Schnittstelle beschriebenen Methoden müssen, sonst umgesetzt werden muss als abstrakte Klasse deklariert werden. Außerdem wird in Java ist die Interface-Typ verwendet, um eine Variable zu deklarieren, können sie eine Null-Zeiger werden oder wird auf ein Objekt dieser Schnittstelle gebunden.

Eine Schnittstelle ähnlich wie bei einem Klassenstandpunkt:

  • Eine Schnittstelle kann mehrere Methoden.
  • Schnittstelle .java-Datei wird am Ende der Datei, den Dateinamen mit dem Schnittstellennamen gespeichert.
  • Bytecode-Datei-Schnittstelle wird in einer Datei mit der Endung .class gespeichert.
  • Interface-Bytecode-Datei mit dem Paketnamen entspricht, muss die Verzeichnisstruktur entsprechen.
Schnittstelle und Klassenunterschiede:
  • Schnittstelle kann nicht instanziiert Objekte verwendet werden.
  • Die Schnittstelle ist nicht der Konstruktor.
  • Alle Interface-Methoden müssen abstrakte Methoden sein.
  • Schnittstellen können nicht Membervariablen, zusätzlich zu den statischen und letzten Variablen enthalten.
  • Schnittstelle wird nicht durch die Klasse geerbt, aber die Klasse realisiert werden.
  • Interface unterstützt Mehrfachvererbung.

Interface-Deklarationen

Interface-Deklaration Syntax lautet wie folgt:

[可见度] interface 接口名称 [extends 其他的类名] {
        // 声明变量
        // 抽象方法
}

Interface-Schlüsselwort wird verwendet, um eine Schnittstelle zu deklarieren. Hier ist ein einfaches Beispiel für eine Interface-Deklaration.

/* 文件名 : NameOfInterface.java */
import java.lang.*;
//引入包

public interface NameOfInterface
{
   //任何类型 final, static 字段
   //抽象方法
}

Schnittstelle hat folgende Eigenschaften:

  • Die Schnittstelle ist implizit abstrakt, wenn eine Schnittstelle zu erklären , wenn es nicht notwendig , die abstrakten Schlüsselwort verwenden.
  • Jede Schnittstelle Methode ist implizit abstrakt, abstrakte Deklaration nicht den gleichen Schlüssel Unter erfordern.
  • Interface-Methoden sind öffentlich.

Beispiele

/* 文件名 : Animal.java */
interface Animal {

   public void eat();
   public void travel();
}

Implementierung der Schnittstelle

Wenn die Klasse implementiert zu erreichen, um die Interface-Klasse-Schnittstelle alle Methoden. Andernfalls muss die Klasse als abstrakte Klasse deklariert werden.

Verwenden implementiert Keyword-Klasse, die die Schnittstelle implementiert. In der Klassendeklaration, Implementiert Schlüsselwort hinter Klassendeklaration.

Implementieren Sie eine Schnittstelle Syntax, können Sie diese Formel verwenden:

... implements 接口名称[, 其他接口, 其他接口..., ...] ...

Beispiele

/* 文件名 : MammalInt.java */
public class MammalInt implements Animal{

   public void eat(){
      System.out.println("Mammal eats");
   }

   public void travel(){
      System.out.println("Mammal travels");
   } 

   public int noOfLegs(){
      return 0;
   }

   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

Mammal eats
Mammal travels

Wenn Methoden überschreiben in der Schnittstelle deklariert, müssen Sie die Aufmerksamkeit auf die folgenden Regeln zu zahlen:

  • Klasse, wenn Methoden der Schnittstelle implementieren, können Sie nicht eine zwingende Ausnahme, nur in der Schnittstelle zu werfen, oder erben die abstrakte Klasse Schnittstelle die obligatorische Ausnahme ausgelöst.
  • Klasse, wenn Umschreiben eine konsistente Methode Namen zu erhalten, und sollte die gleiche oder kompatible Rückgabetyp bleiben.
  • Wenn die Implementierung der Schnittstelle Klasse abstrakt ist, dann gibt es keine Notwendigkeit, das Verfahren der Schnittstelle zu implementieren.

Zum Zeitpunkt der Implementierung der Schnittstelle, aber auch auf einige Regeln zahlen:

  • Eine Klasse kann mehrere Schnittstellen implementieren.
  • Eine Klasse kann nur eine Klasse erben, sondern kann mehrere Schnittstellen implementieren.
  • Eine Schnittstelle kann eine andere Schnittstelle und Klassen erben, die einen Vergleich zwischen ähnlichen erben.

Vererbung Schnittstelle

Eine Schnittstelle kann eine andere Schnittstelle, ähnlicher zwischen den Klassen und Vererbung erben. Inheritance-Schnittstelle erweitert Stichwort Unter Schnittstelle, um die übergeordneten Interface-Methoden erbt.

Hockey und Fußball-Schnittstellen Folgende Schnittstellen sind Sport geerbt:

// 文件名: Sports.java
public interface Sports
{
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}

// 文件名: Football.java
public interface Football extends Sports
{
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}

// 文件名: Hockey.java
public interface Hockey extends Sports
{
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}

Hockey-Schnittstelle selbst erklärt vier Methoden, Schnittstelle erbt zwei Methoden aus Sport, so die Notwendigkeit zu erkennen, das Klassen-Interface Hockey sechs Methoden zu implementieren.

Ebenso muss die Interface-Implementierung Klasse Football fünf Methoden zu implementieren, darunter zwei von den Sport-Schnittstellen.


Mehrfachvererbung Schnittstelle

In Java ist die Mehrfachvererbung Klasse nicht legal, aber die Schnittstelle ermöglicht die Mehrfachvererbung.

In der Schnittstelle von Mehrfachvererbung erweitert Schlüsselwort nur einmal, in den nachfolgenden Folge Vererbung Schnittstellen. Wie folgt:

public interface Hockey extends Sports, Event

Das obige Programm Fragment ist rechtlich Unterschnittstellen definiert, im Gegensatz zu Klassen, die Schnittstelle Mehrfachvererbung erlaubt, und Sport- und Event können die gleiche Methode definieren oder zu erben


Marker-Schnittstelle

Die häufigste vererbte Schnittstelle enthält keine Methoden der Schnittstelle.

Es identifiziert die Schnittstelle keine Interface-Methoden und Eigenschaften ist. Es bedeutet lediglich, dass es auch für andere Code auf eine bestimmte Art von Klasse gehört erlaubt zu testen, etwas zu tun.

Bezeichnet die Rolle der Schnittstelle: einfaches Bild eines Objekts, das eine Markierung (bauen einen Stempel) zu machen, oder ein Objekt machen eine gewisse Berechtigung hat.

Zum Beispiel: java.awt.event Paket Mouselistener Schnittstelle Vererbung java.util.EventListener Schnittstellen sind wie folgt definiert:

package java.util;
public interface EventListener
{}

Es gibt keine Möglichkeit, die Schnittstellenmarkierungsschnittstelle bezeichnet wird. Eine Markierungsschnittstelle wird hauptsächlich für zwei Zwecke verwendet:

  • Die Einrichtung einer gemeinsamen übergeordneten Schnittstellen:

    Als Eventlistener-Schnittstelle, die von Dutzenden von anderen Schnittstellen-Erweiterung Java API zusammengesetzt ist, können Sie einen Marker-Schnittstelle verwenden, um eine Reihe von übergeordneten Schnittstelle Schnittstelle zu etablieren. Zum Beispiel: Wenn ein Interface-Schnittstelle Eventlistener, Java Virtual Machine (JVM) erbt zu wissen, dass die Schnittstelle für ein Programm von Veranstaltungen Mittel verwendet werden.

  • Das Hinzufügen einer Klasse Datentyp:

    Diese Situation ist eine Tagging-Schnittstelle ursprünglichen Zweck, die Klasse, die die Marker-Schnittstelle implementiert, benötigt keine Schnittstelle Methoden zu definieren (als Marker-Schnittstelle einfach keine Möglichkeit ist), aber die Klasse in ein Interface-Typ durch Polymorphismus.