java:interface_definition

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Δήλωση του Interface ====== Παρακάτω δίνεται το παράδειγμα ορισμού ενός Interface ως εξής: <code java> 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); } </code> * **public ή κανένας προσδιοριστής πρόσβασης:** Αν οριστεί //public// τότε το interface είναι ορατό από όλες τις κλάσεις και όλα τα πακέτα στην Java. Αν δεν οριστεί κάτι (package private) τότε το interface είναι ορατό μόνο μέσα στο πακέτο στο οποίο δηλώνεται. * **interface:** δεσμευμένη λέξη * **το όνομα του interface:** στο παράδειγμα μας ''MyInterface''. * **extends:** ένα ή περισσότερα interfaces τα οποία επεκτείνει το συγκεκριμένο interface (comma seperated). Τόσο στις κλάσεις όσο και στα interfaces ορίζεται η ιδιότητα της κληρονομικότητας. __Η διαφορά είναι ότι ενώ στην κλάση μπορούμε να έχουμε μόνο μία γονική κλάση, στα interfaces μπορούμε να έχουμε περισσότερα του ενός γονικά interfaces__. <WRAP tip 80% center round> Ακριβώς όπως και οι κλάσεις κάθε interface πρέπει να βρίσκεται σε ξεχωριστό αρχείο, όπου το όνομα του αρχείου ταυτίζεται με το όνομα του interface και έχει κατάληξη **.java**. Για παράδειγμα το interface με όνομα **MyInterface** θα βρίσκεται σε ένα αρχείο με όνομα **MyInterface.java**. </WRAP> ===== Το σώμα του Interface ===== Ένα //interface// μπορεί να περιέχει πεδία όπως στο παραπάνω παράδειγμα. <code java> double E = 2.718282; double PI = 3.14159; </code> Τα πεδία αυτά εξ ορισμού (by default) ''public, static, final'', δηλ είναι **__σταθερές__** που ανήκουν στις κλάσεις που θα υλοποιήσουν το interface στο οποίο δηλώνονται. Οι μέθοδοι σε ένα interface κατά κανόνα είναι **abstract**, δηλαδή περιέχεται μόνο η δήλωση της μεθόδου χωρίς σώμα (δηλ. υλοποίηση). Επίσης, όλες οι μέθοδοι σε ένα interface είναι εξ ορισμού //public//, κατά συνέπεια ο προσδιορισστής //public// μπορεί να παραληφθεί δηλ <code java> 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); } </code> ===== Παράδειγμα interface - H Στοίβα (Stack) ===== Ας υποθέσουμε ότι θέλουμε να δηλώσουμε μέσω ενός //interface// τις μεθόδους που πρέπει να υποστηρίζει μία κλάση τύπου //Timer//. Ο //Timer// που ορίζουμε θα πρέπει να περιέχει κατ' ελάχιστο τις παρακάτω μεθόδους * **setTimer:** Αρχικοποίηση της τιμής του //timer//. * **startTimer:** Εκκίνηση του //timer//. * **stopTimer:** Διακοπή του //timer//. * **isRunning:** Έλεγχος εάν εκτελείται ο //timer//. * **hasExpired:** Έλεγχος εάν ο timer έχει τερματίσει. Παρακάτω δηλώνεται το //interface Timer// που υποστηρίζει τις παραπάνω λειτουργίες <code java Timer.java> public interface Timer { public void setTimer(int sec); public boolean startTimer(); public void stopTimer(); public boolean isRunning(); public boolean hasExpired(); } </code> | Προηγούμενο : [[ :java:interface | Διεπαφή (interface) ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:interface_implementation | Υλοποίηση του interface ]] |

java/interface_definition.1490965763.txt.gz · Last modified: 2017/03/31 13:09 by gthanos