java:final

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

java:final [2017/01/30 15:46]
gthanos
java:final [2021/03/05 16:01]
Line 1: Line 1:
-====== Final Κλάσεις και Μέθοδοι ====== 
- 
-Μπορείτε να δηλώσετε μία ή περισσότερες μεθόδους μία κλάσης ως //final//. Δηλώνοντας μία μέθοδο ως final η μέθοδος αυτή δεν μπορεί να επαναοριστεί σε μία υποκλάση της κλάσης αυτής. Ο συχνότερος λόγος για να δηλώσετε μία μέθοδο ως //final// είναι αν η υλοποίηση της μεθόδου δεν πρέπει να αλλάξει. Ένα παράδειγμα είναι το παρακάτω, όπου στην υλοποίηση ενός αλγορίθμου για σκάκι τα λευκά πιόνια παίζουν πάντα πρώτα: 
- 
-<code java> 
-class ChessAlgorithm { 
-    enum ChessPlayer { WHITE, BLACK } 
-    ... 
-    final ChessPlayer getFirstPlayer() { 
-        return ChessPlayer.WHITE; 
-    } 
-    ... 
-} 
-</code> 
- 
-Γενικότερα, μέθοδοι που καλούνται από τους κατασκευαστές της κλάσης ή για την αρχικοποίηση των μελών της κλάσης εκτός κατασκευαστών __θα πρέπει__ να ορίζονται ως //final//. Ο λόγος είναι ότι στην περίπτωση που οι μέθοδοι αυτές αλλάξουν την υλοποίηση τους σε υποκλάσεις μπορούν να δημιουργηθούν προβλήματα ως προς την ορθή αρχικοποίηση των μεταβλητών της κλάσης. 
- 
-Τέλος, μπορείτε να προσδιορίσετε μία κλάση ως //final//, όταν θέλετε να δηλώσετε ότι η συγκεκριμένη κλάση δεν πρέπει να έχει υποκλάσεις. Ένα παράδειγμα τέτοια κλάσης είναι η κλάση [[http://docs.oracle.com/javase/7/docs/api/java/lang/String.html | String]] της standard βιβλιοθήκης της Java. 
- 
-|Προηγούμενο: [[ :java:type_casting | Ρητές (explicit) και άρρητες (implicit) μετατροπές τύπων ]] | Επόμενο: [[ :java:multiple_inheritance | Κληρονομικότητα Πολλαπλών Γονικών Κλάσεων ]]| 
  
java/final.txt · Last modified: 2021/03/05 16:01 (external edit)