java:inner_class_access_from_outside
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| java:inner_class_access_from_outside [2017/02/03 14:04] – created gthanos | java:inner_class_access_from_outside [2018/03/21 07:40] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Χρήση προσδιοριστών πρόσβασης στην εσωτερική κλάση ===== | ||
| - | Είδαμε ότι οι εξωτερικές κλάσεις | + | ====== Πρόσβαση |
| - | Στο προηγούμενο παράδειγμα δοκιμάστε να αλλάξετε τον προσδιοριστή πρόσβασης της κλάσης **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> | + | Είδαμε ότι οι εξωτερικές κλάσεις μπορούν να έχουν τους προσδιοριστές πρόσβασης //public// και //package private// (δηλ. κανένας προσδιοριστής). Για τις |
| - | Το παραπάνω | + | |
| - | </ | + | Η επεξήγηση |
| + | - **public**: Η εσωτερική κλάση είναι ορατή από οποιαδήποτε άλλη κλάση. | ||
| + | - **protected**: | ||
| + | - **package-private** (κανένας προσδιοριστής πρόσβασης): | ||
| + | - **private**: | ||
| - | ===== Πρόσβαση από άλλες κλάσεις σε πεδία | + | ===== Πρόσβαση από άλλες κλάσεις στην εσωτερική κλάση ===== |
| Ο παρακάτω κώδικας επιχειρεί να δημιουργήσει ένα αντικείμενο μίας εσωτερικής κλάσης από μία άλλη κλάση. Σε αυτή την περίπτωση και __με την προϋπόθεση ότι η εσωτερική κλάση είναι συνολικά προσβάσιμη__ από την κλάση που επιχειρεί να δημιουργήσει το αντικείμενο, | Ο παρακάτω κώδικας επιχειρεί να δημιουργήσει ένα αντικείμενο μίας εσωτερικής κλάσης από μία άλλη κλάση. Σε αυτή την περίπτωση και __με την προϋπόθεση ότι η εσωτερική κλάση είναι συνολικά προσβάσιμη__ από την κλάση που επιχειρεί να δημιουργήσει το αντικείμενο, | ||
| Line 66: | 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.1486130655.txt.gz · Last modified: 2017/02/03 14:04 (external edit)
