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 ως τύπος δεδομένων ====== Ας υποθέσουμε τώρα ότι θέλουμε να αρχικοποιήσουμε ένα αντικείμενο τύπου //Timer// και περιοδικά να ελέγχουμε εάν ο //timer// έχει λήξει ή όχι. Δείτε το παρακάτω πρόγραμμα το οποίο ελέγχει εάν ο Timer έχει λήξει ή όχι. <code java SleepOnTimer.java> class SleepOnTimer { public static void main(String []args) { Timer timer = new SimpleTimer(); System.out.println(new Date()); sleepOnTimer(timer, 5); System.out.println(new Date()); } public static void sleepOnTimer(Timer t, int sleepSeconds) { try { t.setTimer(sleepSeconds); t.startTimer(); while(!t.hasExpired()) { Thread.sleep(sleepSeconds * 1000 / 10); } } catch(Exception ex) { ex.printStackTrace(); } } } </code> <WRAP important 80% center round> Παρατηρήστε ότι η μέθοδος //sleepOnTimer// παίρνει ως 2ο όρισμα όχι το αντικείμενο μίας κλάσης αλλά ένα αντικείμενο τύπου interface //Timer//! Στην πραγματικότητα αυτό που δηλώνει η συγκεκριμένη μέθοδος είναι ότι ως 2ο όρισμα παίρνει ένα αντικείμενο του οποίου η κλάση υλοποιεί το interface //Timer//. Επίσης, δηλώνει ότι από όλες τις διαθέσιμες μεθόδους της κλάσης μπορούν να χρησιμοποιηθούν μόνο οι μέθοδοι που δηλώνονται στο interface Timer. </WRAP> <WRAP todo 80% center round> Στο παραπάνω πρόγραμμα, αλλάξτε την γραμμή <code java> Timer timer = new SimpleTimer(); </code> σε <code java> Timer timer = new StartStopTimer(); </code> Παρατηρήστε εάν εκτελώντας το πρόγραμμα αυτό τερματίζει στον ίδιο χρόνο (5 sec); </WRAP> | Προηγούμενο : [[ :java:interface_implementation | Υλοποίηση του interface ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:abstract_classes_vs_interfaces | Συγκρίνοντας Abstract Κλάσεις και Interfaces ]] |

java/interface_as_data_type.1490967077.txt.gz · Last modified: 2017/03/31 13:31 by gthanos