This shows you the differences between two versions of the page.
|
java:interface_definition [2017/02/03 09:31] gthanos |
java:interface_definition [2020/02/21 19:12] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Ορισμός του 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); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | * **public ή κανένας προσδιοριστής πρόσβασης: | ||
| - | * **interface: | ||
| - | * **το όνομα του interface: | ||
| - | * **extends: | ||
| - | |||
| - | Τόσο στις κλάσεις όσο και στα interfaces ορίζεται η ιδιότητα της κληρονομικότητας. __Η διαφορά είναι ότι ενώ στην κλάση μπορούμε να έχουμε μόνο μία γονική κλάση, στα interfaces μπορούμε να έχουμε περισσότερα του ενός γονικά interfaces__. | ||
| - | |||
| - | <WRAP tip 80% center round> | ||
| - | Ακριβώς όπως και οι κλάσεις κάθε interface πρέπει να βρίσκεται σε ξεχωριστό αρχείο, | ||
| - | </ | ||
| - | |||
| - | ===== Το σώμα του Interface ===== | ||
| - | |||
| - | Ένα // | ||
| - | |||
| - | <code java> | ||
| - | double E = 2.718282; | ||
| - | double PI = 3.14159; | ||
| - | </ | ||
| - | |||
| - | Τα πεδία αυτά εξ ορισμού (by default) '' | ||
| - | |||
| - | Οι μέθοδοι σε ένα interface κατά κανόνα είναι **abstract**, | ||
| - | |||
| - | <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); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Παράδειγμα interface - H Στοίβα (Stack) ===== | ||
| - | |||
| - | Ας υποθέσουμε ότι θέλουμε να δηλώσουμε μέσω ενός interface της μεθόδους που πρέπει να υποστηρίζει μία στοίβα. Η στοίβα είναι μία δομή αποθήκευσης δεδομένων τύπου **Last In First Out (LIFO)**, όπου το αντικείμενο αποθηκεύεται στη στοίβα τελευταίο εξάγεται από αυτή πρώτο. Κάθε στοίβα θα πρέπει να υποστηρίζει κατ' | ||
| - | * μέθοδο επιστροφής του μεγέθους της στοίβας. | ||
| - | * μέθοδο ένθεσης στην κορυφή της στοίβας. | ||
| - | * μέθοδο απόσβεσης του κορυφαίου στοιχείου. | ||
| - | * μέθοδο επιστροφής του κορυφαίου στοιχείου της στοίβας χωρίς διαγραφή από τη στοίβα. | ||
| - | |||
| - | Παρακάτω δηλώνεται το //interface Stack// που υποστηρίζει αυτές τις λειτουργίες | ||
| - | <code java Stack.java> | ||
| - | public interface Stack { | ||
| - | public int size(); | ||
| - | public void push(Object o); // ένθεση στην κορυφή της στοίβας. | ||
| - | public Object pop(); | ||
| - | public Object top(); | ||
| - | } | ||
| - | </ | ||