Jelenlegi hely

16.2 Interfészek implementálása

Egy interfész viselkedési formákat definiál. Az interfészt megvalósító osztály deklarációjában szerepel az implements záradék. Az osztály akár egy vagy több interfészt is megvalósíthat. (Az interfészek között megengedett a többszörös öröklődés.)

Konvenció: az implements záradék az extends záradékot követi, ha mindkettő van.
A következő példa applet implementálja a StockWatcher interfészt.

public class StockApplet extends Applet
                         implements StockWatcher {

    public void valueChanged(TickerSymbol tickerSymbol,
                             BigDecimal newValue) {
        switch (tickerSymbol) {
            case SUNW:
                ...
                break;
            case ORCL:
                ...
                break;
            case CSCO:
                ...
                break;
            default:
                // handle unknown stocks
                ...
                break;
        }
    }
}

Amikor egy osztály megvalósít egy interfészt, akkor alapvetően aláír egy szerződést. Az osztálynak implementálni kell az interfészben és szülőinterfészeiben deklarált összes metódust, vagy az osztályt absztraktként kell deklarálni. (Az ilyen absztrakt osztályoknak csak akkor lehet nem absztrakt egy leszármazottja, ha az ezen az öröklési szinten meg nem valósított metódusokat már maradéktalanul megvalósítja.)

A StockApplet megvalósítja a StockWatcher interfészt, azaz szolgáltatásként nyújtja a valueChanged metódust.

Az interface használata típusként

Amikor új interfészt definiálunk, referenciát definiálunk egy új adattípushoz. Az interfész nevét akárhol lehet használni, ahol egyéb adattípus is előfordulhat.

public class StockMonitor {
    public void watchStock(StockWatcher watcher,
                           TickerSymbol tickerSymbol,
                           BigDecimal delta) {
    ...
    }
}