java:interface_as_data_type

This is an old revision of the document!


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

====== Το interface ως τύπος δεδομένων ====== Ας υποθέσουμε τώρα ότι θέλουμε να χρησιμοποιήσουμε μία στοίβα για να αντιμεταθέσουμε τα στοιχεία ενός πίνακα χαρακτήρων. Ο πίνακας αρχικά περιέχει την αγγλική αλφαβήτα (26 χαρακτήρες) και θέλουμε να αντιστρέψουμε την σειρά με την οποία αποθηκεύονται οι χαρακτήρες στον πίνακα. Η μέθοδος invertArray παρακάτω αντιμεταθέτει τα στοιχεία του πίνακα array με χρήση της στοίβας stk. <code java ArrayManipulator.java> public class ArrayManipulator { public static void main(String []args) { Character alphabet[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; printCharacterArray(alphabet); System.out.println("-----------"); Stack stack = new ArrayStack(); invertArray(alphabet, stack); printCharacterArray(alphabet); } public static void invertArray(Object []array, Stack stk) { for(int i=0; i<array.length; i++) stk.push(array[i]); for(int i=0; i<array.length; i++) array[i] = stk.pop(); } public static void printCharacterArray(Character []array) { for(Character c : array) System.out.print(c+" "); System.out.println(""); } } </code> <WRAP important 80% center round> Παρατηρήστε ότι η μέθοδος //invertArray// παίρνει ως 2ο όρισμα όχι το αντικείμενο μίας κλάσης αλλά ένα αντικείμενο τύπου interface //Stack//! Στην πραγματικότητα αυτό που δηλώνει η συγκεκριμένη μέθοδος είναι ότι ως 2ο όρισμα παίρνει ένα αντικείμενο του οποίου η κλάση υλοποιεί το interface //Stack//. Επίσης, δηλώνει ότι από όλες τις διαθέσιμες μεθόδους της κλάσης μπορούν να χρησιμοποιηθούν μόνο οι μέθοδοι που δηλώνονται στο interface. </WRAP> <WRAP todo 80% center round> Στο παραπάνω πρόγραμμα, αλλάξτε την γραμμή <code java> Stack stack = new ArrayStack(); </code> σε <code java> Stack stack = new LinkedStack(); </code> Παρατηρήστε αν σας βγάζει κάποιο μήνυμα ο //compiler// και εάν εκτελώντας το πρόγραμμα παράγεται το ίδιο τελικό αποτέλεσμα. Τι συμπέρασμα βγάζετε για τη χρήση της στοίβας από την μέθοδο //invertArray()//; </WRAP> | Προηγούμενο : [[ :java:interface_implementation | Υλοποίηση του interface ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:interface_modification | Μεταβολή υφιστάμενου interface ]] |

java/interface_as_data_type.1487255456.txt.gz · Last modified: 2017/02/16 14:30 by gthanos