Table of Contents

Δήλωση του Interface

Παρακάτω δίνεται το παράδειγμα ορισμού ενός Interface ως εξής:

public interface MyInterface extends Interface1, Interface2, Interface3 {
 
    // constant declarations    
    // base of natural logarithms
    double E = 2.718282;
    double PI = 3.14159;
 
    // method signatures
    public void interfaceMethod(int i, double x);
    public int interfaceMethod2(String s);
}

Τόσο στις κλάσεις όσο και στα interfaces ορίζεται η ιδιότητα της κληρονομικότητας. Η διαφορά είναι ότι ενώ στην κλάση μπορούμε να έχουμε μόνο μία γονική κλάση, στα interfaces μπορούμε να έχουμε περισσότερα του ενός γονικά interfaces.

Ακριβώς όπως και οι κλάσεις κάθε interface πρέπει να βρίσκεται σε ξεχωριστό αρχείο, όπου το όνομα του αρχείου ταυτίζεται με το όνομα του interface και έχει κατάληξη .java. Για παράδειγμα το interface με όνομα MyInterface θα βρίσκεται σε ένα αρχείο με όνομα MyInterface.java.

Το σώμα του Interface

Ένα interface μπορεί να περιέχει πεδία όπως στο παραπάνω παράδειγμα.

double E = 2.718282;
double PI = 3.14159;

Τα πεδία αυτά εξ ορισμού (by default) public, static, final, δηλ είναι σταθερές που ανήκουν στις κλάσεις που θα υλοποιήσουν το interface στο οποίο δηλώνονται.

Οι μέθοδοι σε ένα interface κατά κανόνα είναι abstract, δηλαδή περιέχεται μόνο η δήλωση της μεθόδου χωρίς σώμα (δηλ. υλοποίηση). Επίσης, όλες οι μέθοδοι σε ένα interface είναι εξ ορισμού public, κατά συνέπεια ο προσδιορισστής public μπορεί να παραληφθεί δηλ

public interface MyInterface extends Interface1, Interface2, Interface3 {
 
    // constant declarations    
    // base of natural logarithms
    double E = 2.718282;
    double PI = 3.14159;
 
    // method signatures
    public void interfaceMethod1(int i, double x);
    public int interfaceMethod2(String s);
}

Παράδειγμα interface - H Στοίβα (Stack)

Ας υποθέσουμε ότι θέλουμε να δηλώσουμε μέσω ενός interface της μεθόδους που πρέπει να υποστηρίζει μία στοίβα. Η στοίβα είναι μία δομή αποθήκευσης δεδομένων τύπου Last In First Out (LIFO), όπου το αντικείμενο αποθηκεύεται στη στοίβα τελευταίο εξάγεται από αυτή πρώτο.

Στο παρακάτω σχήμα δίνεται η γραφική απεικόνιση μιας στοίβας που αποθηκεύει ακέραιους αριθμούς. Αρχικά είναι αποθηκευμένο το 1 και στη συνέχεια αποθηκεύεονται τα 2,3,4,5,6. Παρατηρήστε ότι η σειρά με την οποία αφαιρούνται οι αριθμοί είναι η αντίστροφη δηλ 6,5,4,3,2,1.

Γραφική απεικόνιση μιας στοίβας που αποθηκεύει ακέραιους αριθμούς

Κάθε στοίβα θα πρέπει να υποστηρίζει κατ' ελάχιστο τα εξής:

Παρακάτω δηλώνεται το interface Stack που υποστηρίζει αυτές τις λειτουργίες

Stack.java
public interface Stack {
  public int size();           // επιστροφή του μεγέθους της στοίβας.
  public void push(Object o);  // ένθεση στην κορυφή της στοίβας.
  public Object pop();         // απόσβεση από την κορυφή της στοίβας.
  public Object top();         // επιστροφή του κορυφαίου στοιχείου της στοίβας χωρίς διαγραφή του.
}