java:access_modifiers

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:access_modifiers [2015/02/05 17:04]
gthanos [Προσδιοριστές Πρόσβασης στο επίπεδο της των μελών της κλάσης]
java:access_modifiers [2017/02/16 14:37] (current)
gthanos [Προσδιοριστές Πρόσβασης στο επίπεδο της των μελών της κλάσης]
Line 1: Line 1:
-====== Ελέγχοντας την πρόσβαση άλλων κλάσεων σε μέλη της κλάσης - Περιοριστές πρόσβασης ======+====== ​Περιοριστές πρόσβασης - Ελέγχοντας την πρόσβαση άλλων κλάσεων στα μέλη της κλάσης ======
  
-Προηγουμένως είδαμε την [[java:jar_files#​Διάκριση μεταξύ πεδίων με τον προσδιοριστή πρόσβασης public και private | διάκριση μεταξύ πεδίων με βάση τον προσδιοριστή πρόσβασης **public** και **private**. Σε αυτή την ενότητα θα δούμε συνολικά την χρήση των προσδιοριστών πρόσβασης.+Προηγουμένως είδαμε την [[java:class_fields#​Διάκριση μεταξύ πεδίων με τον προσδιοριστή πρόσβασης public και private | διάκριση μεταξύ πεδίων με βάση τον προσδιοριστή πρόσβασης **public** και **private**]]. Σε αυτή την ενότητα θα δούμε συνολικά την χρήση των προσδιοριστών πρόσβασης.
  
 Οι προσδιοριστές πρόσβασης εφαρμόζονται στα παρακάτω δύο επίπεδα,​ τα οποία θα δούμε στη συνέχεια αναλυτικά. Οι προσδιοριστές πρόσβασης εφαρμόζονται στα παρακάτω δύο επίπεδα,​ τα οποία θα δούμε στη συνέχεια αναλυτικά.
Line 9: Line 9:
 ===== Προσδιοριστές Πρόσβασης στο επίπεδο της κλάσης ===== ===== Προσδιοριστές Πρόσβασης στο επίπεδο της κλάσης =====
  
-Όσον αφορά το επίπεδο της κλάσης οι περιοριστές πρόσβασης έχουν δύο τιμές+Όσον αφορά το επίπεδο της κλάσης οι προσδιοριστές πρόσβασης έχουν ​τρεις ​δυνατές ​τιμές
   - **public**: Η κλάση είναι ορατή από οποιαδήποτε άλλη κλάση στο ίδιο ή σε άλλο πακέτο.   - **public**: Η κλάση είναι ορατή από οποιαδήποτε άλλη κλάση στο ίδιο ή σε άλλο πακέτο.
   - **package-private** (κανένας προσδιοριστής πρόσβασης):​ Σε αυτή την περίπτωση η κλάση είναι ορατή μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση.   - **package-private** (κανένας προσδιοριστής πρόσβασης):​ Σε αυτή την περίπτωση η κλάση είναι ορατή μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση.
 +  - **private**:​ Μόνο για [[ :​java:​inner_classes | εσωτερικές κλάσεις ]]. Η κλάση είναι ορατή μόνο από την κλάση στην οποία περικλείεται. ​
 ===== Προσδιοριστές Πρόσβασης στο επίπεδο της των μελών της κλάσης ===== ===== Προσδιοριστές Πρόσβασης στο επίπεδο της των μελών της κλάσης =====
  
 Όσον αφορά το επίπεδο των μελών της κλάσης εδώ έχουμε 4 επιλογές:​ Όσον αφορά το επίπεδο των μελών της κλάσης εδώ έχουμε 4 επιλογές:​
   - **public**: Τα μέλη της κλάσης είναι ορατά από οποιαδήποτε άλλη κλάση στο ίδιο ή σε άλλο πακέτο.   - **public**: Τα μέλη της κλάσης είναι ορατά από οποιαδήποτε άλλη κλάση στο ίδιο ή σε άλλο πακέτο.
-  - **protected**:​ Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση. +  - **protected**:​ Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση ​ή από υποκλάσεις της υφιστάμενης κλάσης που ανήκουν σε άλλα πακέτα
-  - **package-private** (κανένας προσδιοριστής πρόσβασης):​ Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση ​ή από υποκλάσεις της υφιστάμενης κλάσης που ανήκουν σε άλλα πακέτα.+  - **package-private** (κανένας προσδιοριστής πρόσβασης):​ Τα μέλη της κλάσης είναι ορατά μόνο από κλάσεις που ανήκουν στο ίδιο πακέτο με την υφιστάμενη κλάση.
   - **private**:​ Τα μέλη της κλάσης είναι ορατά μόνο από την συγκεκριμένη κλάση.   - **private**:​ Τα μέλη της κλάσης είναι ορατά μόνο από την συγκεκριμένη κλάση.
  
Line 31: Line 31:
   * Η πρώτη στήλη του πίνακα δείχνει αν η ίδια η κλάση έχει πρόσβαση στα μέλη της. Αυτό ισχύει σε όλες τις περιπτώσεις. ​   * Η πρώτη στήλη του πίνακα δείχνει αν η ίδια η κλάση έχει πρόσβαση στα μέλη της. Αυτό ισχύει σε όλες τις περιπτώσεις. ​
   * Η δεύτερη στήλη δείχνει αν μία κλάση που ανήκει στο ίδιο πακέτο με την εξεταζόμενη κλάση έχει πρόσβαση στα μέλη της κλάσης.   * Η δεύτερη στήλη δείχνει αν μία κλάση που ανήκει στο ίδιο πακέτο με την εξεταζόμενη κλάση έχει πρόσβαση στα μέλη της κλάσης.
-  * Η τρίτη στήλη δείχνει αν μία υποκλάση της εξεταζόμενης κλάσης που βρίσκεται ​σε άλλο ​σε άλλο πακέτο έχει πρόσβαση στα μέλη της κλάσης.+  * Η τρίτη στήλη δείχνει αν μία υποκλάση της εξεταζόμενης κλάσης που βρίσκεται σε άλλο πακέτο έχει πρόσβαση στα μέλη της κλάσης.
   * Η τέταρτη στήλη δείχνει αν μία κλάση που ανήκει σε άλλο πακέτο έχει πρόσβαση στα μέλη της κλάσης.   * Η τέταρτη στήλη δείχνει αν μία κλάση που ανήκει σε άλλο πακέτο έχει πρόσβαση στα μέλη της κλάσης.
  
Line 45: Line 45:
 | ''​private'' ​ | Ναι | Όχι | Όχι | Όχι | | ''​private'' ​ | Ναι | Όχι | Όχι | Όχι |
  
-Μπορείτε να κατεβάσετε τον ​[[:​java:​access-modifiers.tgz| εδώ]]. Προσπαθήστε να μεταγλωττίσετε ως εξής+Μπορείτε να κατεβάσετε τον ​κώδικα που υλοποιεί το παραπάνω σχήμα κλάσεων και περιοριστών πρόσβασης {{:​java:​access-modifiers.tgz}}. Προσπαθήστε να μεταγλωττίσετε ως εξής:
  
 <​code>​ <​code>​
Line 55: Line 55:
 javac ClassC.java -cp ../ javac ClassC.java -cp ../
 </​code>​ </​code>​
 +
 +Παρατηρήστε τα λάθη αναφορικά με τους προσδιοριστές πρόσβασης που σας βγάζει ο compiler.
 +
 +| Προηγούμενο:​ [[ :​java:​packages:​using ​ | Χρήση κλάσεων από άλλες κλάσεις ]]  | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :​java:​inheritance | Κληρονομικότητα]] |
 +
  
java/access_modifiers.1423155864.txt.gz · Last modified: 2016/02/26 11:15 (external edit)