Latest web development tutorials

interfaccia Java

Interface (inglese: Interface), nel linguaggio di programmazione Java è un tipo astratto, è un insieme di metodi astratti, interfacce tipicamente interfacciano alla dichiarazione. Una classe ereditando la modalità di interfaccia, in tal modo di ereditare astratto interfaccia metodi.

L'interfaccia non è una classe, e l'approccio di classe all'interfaccia preparazione è molto simile, ma appartengono a concetti diversi. Classe descrive le proprietà ei metodi degli oggetti. classe metodo per implementare l'interfaccia contiene.

A meno che l'implementazione della classe interfaccia è astratta, oppure per definire l'interfaccia di classe tutti i metodi.

Interfaccia non può essere istanziato, ma può essere implementato. Una classe che implementa l'interfaccia, tutti i metodi descritti nell'interfaccia devono essere attuate, altrimenti deve essere dichiarato come una classe astratta. Inoltre, in Java, il tipo di interfaccia è utilizzata per dichiarare una variabile, possono diventare un puntatore nullo, o è destinato ad un oggetto di questa interfaccia.

Un'interfaccia simile a un punto di classe:

  • Un'interfaccia può avere più metodi.
  • il file .java Interface viene salvato nella fine del file, il nome del file utilizzando il nome dell'interfaccia.
  • interfaccia del file bytecode viene salvato in un file con estensione .class.
  • Interfaccia corrispondente file bytecode con il nome del pacchetto deve corrispondere alla struttura di directory.
Interfaccia e distinzione di classe:
  • Interfaccia non può essere utilizzato per istanziare oggetti.
  • L'interfaccia non è il costruttore.
  • Tutti i metodi di interfaccia devono essere metodi astratti.
  • Interfacce non possono contenere variabili membro, oltre alle variabili statiche e finali.
  • Interface non è ereditato dalla classe, ma la classe si vuole realizzare.
  • Interfaccia supporta l'ereditarietà multipla.

interfaccia dichiarazioni

sintassi di dichiarazione di interfaccia è la seguente:

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

parola chiave interfaccia viene utilizzata per dichiarare una interfaccia. Ecco un semplice esempio di una dichiarazione di interfaccia.

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

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

Interfaccia ha le seguenti caratteristiche:

  • L'interfaccia è implicitamente astratto, quando si dichiara una interfaccia quando non è necessario usare la parola chiave astratta.
  • Ogni metodo interfaccia è implicitamente astratto, dichiarazione astratta non richiede la stessa chiave secondaria.
  • metodi di interfaccia sono pubblici.

Esempi

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

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

Implementazione dell'interfaccia

Quando la classe implementa l'interfaccia classe di interfaccia tutti i metodi per raggiungere. In caso contrario, la classe deve essere dichiarato come una classe astratta.

Usa implementa classe parola chiave che implementa l'interfaccia. Nella dichiarazione di classe, implementa parola chiave dietro dichiarazione di classe.

Implementare una sintassi interfaccia, è possibile utilizzare questa formula:

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

Esempi

/* 文件名 : 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();
   }
} 

Gli esempi sopra risultati elaborati sono i seguenti:

Mammal eats
Mammal travels

Quando si esegue l'override metodi dichiarati nell'interfaccia, è necessario prestare attenzione alle seguenti regole:

  • Classe nell'attuazione metodi dell'interfaccia, non è possibile lanciare una eccezione obbligatoria, solo nell'interfaccia, oppure ereditare l'interfaccia classe astratta generata l'eccezione obbligatoria.
  • Classe quando riscrittura Per mantenere un nome di un metodo coerente, e dovrebbe rimanere lo stesso o compatibile tipo di ritorno.
  • Se l'implementazione della classe interfaccia è astratta, allora non c'è necessità di attuare il metodo dell'interfaccia.

Al momento della implementazione dell'interfaccia, ma anche prestare attenzione ad alcune regole:

  • Una classe può implementare più interfacce.
  • Una classe può ereditare una sola classe, ma può implementare più interfacce.
  • Un'interfaccia può ereditare un'altra interfaccia, e le classi che ereditano confronto tra simili.

Interfaccia Inheritance

Un'interfaccia può ereditare un'altra interfaccia, più simile tra le classi e l'ereditarietà. Interfaccia eredità si estende parola chiave sub-interfaccia eredita i metodi di interfaccia genitore.

interfacce Hockey e calcio Le seguenti interfacce sono ereditati Sport:

// 文件名: 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 interfaccia si dichiara quattro metodi, interfaccia eredita due metodi da sport, in modo da realizzare la necessità di attuare l'Hockey interfaccia della classe sei metodi.

Allo stesso modo, la classe di implementazione dell'interfaccia di calcio ha bisogno di implementare cinque metodi, tra cui due dalle interfacce sportive.


Interfaccia ereditarietà multipla

In Java, più di ereditarietà di classe non è legale, ma l'interfaccia consente l'ereditarietà multipla.

Nell'interfaccia di ereditarietà multipla estende parola chiave solo una volta, nei successivi interfacce follow-successione. Come segue:

public interface Hockey extends Sports, Event

Il frammento di programma di cui sopra è legalmente definito sub-interfacce, a differenza di classi che interfaccia permette l'ereditarietà multipla, e Sport e eventi può definire o ereditare lo stesso metodo


interfaccia Marker

L'interfaccia ereditata più comune non contiene metodi dell'interfaccia.

Esso identifica l'interfaccia sono i metodi e le proprietà di interfaccia. Essa indica semplicemente che appartiene a un particolare tipo di classe per altro codice per testare permesso di fare qualcosa.

Identifica il ruolo dell'interfaccia: semplice immagine di un oggetto che è quello di fare un segno (costruire un timbro), o fare un oggetto ha un certo privilegio.

Per esempio: il pacchetto java.awt.event interfacce interfaccia MouseListener eredità java.util.EventListener sono definiti come segue:

package java.util;
public interface EventListener
{}

Non c'è modo l'interfaccia è chiamata interfaccia marker. Un'interfaccia indicatore è utilizzato principalmente per due scopi:

  • L'istituzione di un genitore interfacce comuni:

    Come EventListener interfaccia, che è composto da decine di altre API Interface Extension Java, è possibile utilizzare un'interfaccia marcatore per stabilire una serie di un'interfaccia interfaccia madre. Ad esempio: quando un'interfaccia eredita EventListener interfaccia, Java Virtual Machine (JVM) per conoscere l'interfaccia da utilizzare per un programma di agente eventi.

  • L'aggiunta di un tipo di dati di classe:

    Questa situazione è uno scopo un'interfaccia tag originale, la classe che implementa l'interfaccia marcatore non ha bisogno di definire i metodi di interfaccia (come interfaccia marcatore è alcun modo), ma la classe in un tipo di interfaccia attraverso il polimorfismo.