====== Υλοποίηση του Interface ======
Μία κλάση υλοποιεί ένα interface μόνο εάν υλοποιεί ΟΛΕΣ τις μεθόδους του interface. Έάν έστω και μία μέθοδος δεν υλοποιείται τότε η κλάση δεν υλοποιεί το interface. 
Σε συνέχεια του προηγούμενου παραδείγματος θα επιχειρήσουμε να δημιουργήσουμε δύο διαφορετικές κλάσεις που υλοποιούν το συγκεκριμένο //interface//. Οι κλάσεις αυτές είναι **SimpleTimer** και **StartStopTimer**. Και οι δύο κλάσεις παρέχουν την ίδια λειτουργικότητα.
===== ArrayStack =====
public class ArrayStack implements Stack {
  public int capacity;
  public Object []array;
  public int size;
  
  public ArrayStack() {
    this(256);
  }
  
  public ArrayStack(int capacity) {
    array = new Object[capacity];
    this.capacity = capacity;
    size = 0;
  }
  
  public int size() {
    return size;
  }
  
  public void push(Object o) {
  
    if( size >= capacity-1 ) {
      capacity *= 2;
      Object []newArray = new Object[capacity];
      for(int i=0; i=0; i--)
      str += array[i].toString()+"\n";
    return str + "@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";
  }  
}
===== ListStack =====
import java.util.*;
public class ListStack implements Stack {
  private ArrayList list;  
  
  public ListStack() {
    list = new ArrayList();
  }
  
  public int size() {
    return list.size();
  }
  
  public void push(Object o) {  
    list.add(o);
  }
  
  public Object pop() {
    return list.remove(list.size()-1);
  }
  
  public Object top() {
    return list.get(list.size()-1);
  }
  
  public String toString() {
    String str = "@@@@@@@@ - Stack - @@@@@@@@\n";
    for(Object o : list)
      str += o.toString()+"\n";
    return str + "@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";
  }  
}
Παραπάνω έχουμε υλοποιήσει το συγκεκριμένο //interface// μέσα από δύο διαφορετικές κλάσεις. Αν και η υλοποίηση των κλάσεων διαφέρει σημαντικά, η λειτουργία τους είναι κοινή. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε από της δύο κλάσεις για να εξυπηρετήσετε τη λειτουργικότητα του //interface// **Stack** σε ένα πρόγραμμα.
| Προηγούμενο : [[ :java:interface_definition | Δήλωση του interface  ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:interface_as_data_type | Το interface ως τύπος δεδομένων ]]  |