java:inner_class_access_from_outside
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:inner_class_access_from_outside [2017/02/03 15:24] – [Χρήση προσδιοριστών πρόσβασης στην εσωτερική κλάση] gthanos | java:inner_class_access_from_outside [2018/03/21 07:40] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Πρόσβαση από | + | ====== Πρόσβαση από |
- | ====== Χρήση προσδιοριστών πρόσβασης για την εσωτερική κλάση | + | ===== Χρήση προσδιοριστών πρόσβασης για την εσωτερική κλάση ===== |
Είδαμε ότι οι εξωτερικές κλάσεις μπορούν να έχουν τους προσδιοριστές πρόσβασης //public// και //package private// (δηλ. κανένας προσδιοριστής). Για τις εσωτερικές κλάσεις υφίσταται οι επιλογές //public//, // | Είδαμε ότι οι εξωτερικές κλάσεις μπορούν να έχουν τους προσδιοριστές πρόσβασης //public// και //package private// (δηλ. κανένας προσδιοριστής). Για τις εσωτερικές κλάσεις υφίσταται οι επιλογές //public//, // | ||
Line 10: | Line 10: | ||
- **public**: Η εσωτερική κλάση είναι ορατή από οποιαδήποτε άλλη κλάση. | - **public**: Η εσωτερική κλάση είναι ορατή από οποιαδήποτε άλλη κλάση. | ||
- | - **protected**: | + | - **protected**: |
- **package-private** (κανένας προσδιοριστής πρόσβασης): | - **package-private** (κανένας προσδιοριστής πρόσβασης): | ||
- **private**: | - **private**: | ||
- | Στο προηγούμενο παράδειγμα δοκιμάστε να αλλάξετε τον προσδιοριστή πρόσβασης της κλάσης **InnerClass** από package private σε private. Σε αυτή την περίπτωση θα παρατηρήσετε ότι η κλάση **TestOuterClass** δεν μεταγλωττίζεται. Συγκεκριμένα, | + | ===== Πρόσβαση από άλλες κλάσεις στην εσωτερική κλάση ===== |
- | + | ||
- | < | + | |
- | TestOuterClass.java: | + | |
- | OuterClass.InnerOuterClass inner = outer.new InnerOuterClass(4); | + | |
- | ^ | + | |
- | TestOuterClass.java: | + | |
- | OuterClass.InnerOuterClass inner = outer.new InnerOuterClass(4); | + | |
- | </ | + | |
- | + | ||
- | <WRAP tip 80% center round> | + | |
- | Το παραπάνω εξηγεί ικανοποιητικά τον τρόπο με τον οποίο μπορείτε να αποκλείσετε την πρόσβαση στην εσωτερική κλάση από άλλες κλάσεις πέραν της εξωτερικής. Ορίζοντας την εσωτερική κλάση ως **private** αυτή είναι προσβάσιμη μόνο από την εξωτερική της κλάση. | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ===== Πρόσβαση από άλλες κλάσεις σε πεδία | + | |
Ο παρακάτω κώδικας επιχειρεί να δημιουργήσει ένα αντικείμενο μίας εσωτερικής κλάσης από μία άλλη κλάση. Σε αυτή την περίπτωση και __με την προϋπόθεση ότι η εσωτερική κλάση είναι συνολικά προσβάσιμη__ από την κλάση που επιχειρεί να δημιουργήσει το αντικείμενο, | Ο παρακάτω κώδικας επιχειρεί να δημιουργήσει ένα αντικείμενο μίας εσωτερικής κλάσης από μία άλλη κλάση. Σε αυτή την περίπτωση και __με την προϋπόθεση ότι η εσωτερική κλάση είναι συνολικά προσβάσιμη__ από την κλάση που επιχειρεί να δημιουργήσει το αντικείμενο, | ||
Line 77: | Line 62: | ||
</ | </ | ||
+ | <WRAP tip 80% center round> | ||
Κατά συνέπεια, | Κατά συνέπεια, | ||
- Η εσωτερική κλάση θα πρέπει να είναι συνολικά προσβάσιμη. | - Η εσωτερική κλάση θα πρέπει να είναι συνολικά προσβάσιμη. | ||
- | - Με την προϋπόθεση ότι ισχύει το **1.**, ισχύουν οι [[java: | + | - Με την προϋπόθεση ότι ισχύει το παραπάνω, για τα πεδία και τις μεθόδους της εσωτερικής κλάσης |
+ | </ | ||
+ | Στο προηγούμενο παράδειγμα δοκιμάστε να αλλάξετε τον προσδιοριστή πρόσβασης της κλάσης **InnerClass** από //package private// σε // | ||
+ | |||
+ | < | ||
+ | TestOuterClass.java: | ||
+ | OuterClass.InnerOuterClass inner = outer.new InnerOuterClass(4); | ||
+ | ^ | ||
+ | TestOuterClass.java: | ||
+ | OuterClass.InnerOuterClass inner = outer.new InnerOuterClass(4); | ||
+ | </ | ||
+ | |||
+ | <WRAP tip 80% center round> | ||
+ | Το παραπάνω εξηγεί ικανοποιητικά τον τρόπο με τον οποίο μπορείτε να αποκλείσετε την πρόσβαση στην εσωτερική κλάση από άλλες κλάσεις πέραν της εξωτερικής. Ορίζοντας την εσωτερική κλάση ως **private** αυτή είναι προσβάσιμη μόνο από την εξωτερική της κλάση. | ||
+ | </ | ||
+ | | Προηγούμενο : [[ : |
java/inner_class_access_from_outside.1486135473.txt.gz · Last modified: 2017/02/03 15:24 (external edit)