This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:access_modifiers [2015/02/05 16:32] gthanos [Προσδιοριστές Πρόσβασης στο επίπεδο της των μελών της κλάσης] |
java:access_modifiers [2015/03/02 10:12] gthanos [Ελέγχοντας την πρόσβαση άλλων κλάσεων σε μέλη της κλάσης - Περιοριστές πρόσβασης] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Ελέγχοντας την πρόσβαση άλλων κλάσεων σε μέλη της κλάσης - Περιοριστές πρόσβασης ====== | ====== Ελέγχοντας την πρόσβαση άλλων κλάσεων σε μέλη της κλάσης - Περιοριστές πρόσβασης ====== | ||
- | Προηγουμένως είδαμε την [[java:jar_files#Διάκριση μεταξύ πεδίων με τον προσδιοριστή πρόσβασης public και private | διάκριση μεταξύ πεδίων με βάση τον προσδιοριστή πρόσβασης **public** και **private**. Σε αυτή την ενότητα θα δούμε συνολικά την χρήση των προσδιοριστών πρόσβασης. | + | Προηγουμένως είδαμε την [[java:class_fields#Διάκριση μεταξύ πεδίων με τον προσδιοριστή πρόσβασης public και private | διάκριση μεταξύ πεδίων με βάση τον προσδιοριστή πρόσβασης **public** και **private**]]. Σε αυτή την ενότητα θα δούμε συνολικά την χρήση των προσδιοριστών πρόσβασης. |
Οι προσδιοριστές πρόσβασης εφαρμόζονται στα παρακάτω δύο επίπεδα, τα οποία θα δούμε στη συνέχεια αναλυτικά. | Οι προσδιοριστές πρόσβασης εφαρμόζονται στα παρακάτω δύο επίπεδα, τα οποία θα δούμε στη συνέχεια αναλυτικά. | ||
Line 17: | Line 17: | ||
Όσον αφορά το επίπεδο των μελών της κλάσης εδώ έχουμε 4 επιλογές: | Όσον αφορά το επίπεδο των μελών της κλάσης εδώ έχουμε 4 επιλογές: | ||
- **public**: Τα μέλη της κλάσης είναι ορατά από οποιαδήποτε άλλη κλάση στο ίδιο ή σε άλλο πακέτο. | - **public**: Τα μέλη της κλάσης είναι ορατά από οποιαδήποτε άλλη κλάση στο ίδιο ή σε άλλο πακέτο. | ||
- | - **protected**: Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση. | + | - **protected**: Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση ή από υποκλάσεις της υφιστάμενης κλάσης που ανήκουν σε άλλα πακέτα. |
- | - **package-private** (κανένας προσδιοριστής πρόσβασης): Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση ή από υποκλάσεις της υφιστάμενης κλάσης που ανήκουν σε άλλα πακέτα. | + | - **package-private** (κανένας προσδιοριστής πρόσβασης): Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση. |
- **private**: Τα μέλη της κλάσης είναι ορατά μόνο από την συγκεκριμένη κλάση. | - **private**: Τα μέλη της κλάσης είναι ορατά μόνο από την συγκεκριμένη κλάση. | ||
Line 37: | Line 37: | ||
- | {{ :java:classes-access.gif?300 |}} | + | {{ :java:classes-access.gif?350 |}} |
^ Προσδ.Πρόσβασης ^ Alpha ^ Beta ^ SubAlpha ^ Gamma ^ | ^ Προσδ.Πρόσβασης ^ Alpha ^ Beta ^ SubAlpha ^ Gamma ^ | ||
Line 45: | Line 45: | ||
| ''private'' | Ναι | Όχι | Όχι | Όχι | | | ''private'' | Ναι | Όχι | Όχι | Όχι | | ||
+ | Μπορείτε να κατεβάσετε τον κώδικα που υλοποιεί το παραπάνω σχήμα κλάσεων και περιοριστών πρόσβασης {{:java:access-modifiers.tgz}}. Προσπαθήστε να μεταγλωττίσετε ως εξής: | ||
+ | <code> | ||
+ | cd package_one | ||
+ | javac ClassA.java | ||
+ | javac ClassB.java -cp ../ | ||
+ | cd package_two | ||
+ | javac SubClassA.java -cp ../ | ||
+ | javac ClassC.java -cp ../ | ||
+ | </code> | ||
- | + | Παρατηρήστε τα λάθη αναφορικά με τους προσδιοριστές πρόσβασης που σας βγάζει ο compiler. | |