Βίντεο: Android 101 by Fred Widjaja 2024
Μπορείτε να ορίσετε την πρόσβαση για πεδία και μεθόδους στην εφαρμογή Android. Μια κλάση Java μπορεί να έχει πρόσβαση είτε δημόσια είτε μη δημόσια (προεπιλογή). Αλλά ένα μέλος μιας τάξης έχει τέσσερις δυνατότητες: δημόσιο, ιδιωτικό, προεπιλεγμένο και προστατευμένο.
Τα πεδία και οι μέθοδοι μιας τάξης είναι τα μέλη της τάξης.
Δείτε πώς λειτουργεί η πρόσβαση μέλους:
- Ένα προεπιλεγμένο μέλος μιας κατηγορίας (ένα μέλος του οποίου η δήλωση δεν περιέχει τις λέξεις
public
,private
ή - Ένα ιδιωτικό μέλος μιας τάξης δεν μπορεί να χρησιμοποιηθεί σε κανέναν κώδικα έξω από την τάξη.
- Ένα δημόσιο μέλος μιας τάξης μπορεί να χρησιμοποιηθεί οπουδήποτε μπορεί να χρησιμοποιηθεί η ίδια η τάξη. δηλαδή:
- Οποιοδήποτε πρόγραμμα σε οποιοδήποτε πακέτο μπορεί να αναφέρεται σε ένα δημόσιο μέλος μιας δημόσιας τάξης.
- Για ένα πρόγραμμα που αναφέρεται σε ένα δημόσιο μέλος μιας προεπιλεγμένης κλάσης πρόσβασης, το πρόγραμμα πρέπει να βρίσκεται μέσα στο ίδιο πακέτο με την κλάση.
Για να δείτε αυτούς τους κανόνες σε δράση, ελέγξτε την δημόσια τάξη σε αυτόν τον κώδικα.
πακέτο com. allyourcode. τράπεζα;
δημόσια λογαριασμός κλάσης {
δημόσιο συμβολοσειρά όνομα_χρήστη;
ιδιωτικό int εσωτερικόIdNumber;
Διεύθυνση συμβολοσειράς.
Κορδόνι τηλέφωνο?
κοινό int socialSecurityNumber;
int accountType;
διπλή ισορροπία.
δημόσιο static int findById (int εσωτερικόIdNumber) {
Λογαριασμός foundAccount = new Account ();
// Κωδικός για να βρείτε το λογαριασμό πηγαίνει εδώ.
επιστροφή βρέθηκεAccount. internalIdNumber;
}
}
Ο κωδικός χρησιμοποιεί την κλάση
Λογαριασμό
και τα πεδία του.
Ας δούμε τι συμβαίνει με ένα διαφορετικό πακέτο.
Αναφερόμενο σε μια δημόσια τάξη σε διαφορετικό πακέτο.Τα μηνύματα σφάλματος δείχνουν κάποια προβλήματα με τον κώδικα. Ακολουθεί μια λίστα γεγονότων σχετικά με αυτά τα δύο κομμάτια του κώδικα:
- Η κλάση
UseAccoun
t είναι στην ίδια συσκευασία με την κατηγορίαΛογαριασμός
. - Η κλάση
UseAccount
μπορεί να δημιουργήσει μια μεταβλητή τύπουΛογαριασμός
. - Ο κωδικός της κλάσης
UseAccount
μπορεί να αναφέρεται στο δημόσιο πεδίοόνομα_χρήστη
της κλάσηςΛογαριασμού
και στο πεδίοΚατηγορία λογαριασμού
. - Η κλάση
UseAccount
δεν μπορεί να παραπέμπει στο ιδιωτικό πεδίοinternalIdNumber
της κατηγορίαςΛογαριασμός
, παρόλο που ο λογαριασμόςUseAccount
και - Η κλάση
UseAccountFromOutside
δεν βρίσκεται στο ίδιο πακέτο με την κατηγορίαΛογαριασμός
. - Η κλάση
UseAccountFromOutside
μπορεί να δημιουργήσει μια μεταβλητή τύπουΛογαριασμός
. (Το
UseAccountFromOutside - είναι το όνομα
ο κώδικας της κλάσης μπορεί να αναφέρεται στο δημόσιο πεδίο
όνομα_τολέατης κλάσης
Λογαριασμός.
Ο κώδικας της κλάσης - UseAccountFromOutside
δεν μπορεί να παραπέμπει στο πεδίο
διεύθυνσηπροεπιλεγμένο στην κλάση
Λογαριασμόςή στο πεδίο
internalIdNumber.
Τώρα εξετάστε τη μη δημόσια τάξη σε αυτόν τον κώδικα.
πακέτο com. allyourcode. παιχνίδι;
κατηγορία Sprite {
δημόσια
όνομα συμβολοσειράς; Εικόνα συμβολοσειράς.
διπλή απόστασηFromLeftEdge, distanceFromTop;
διπλή κίνησηΑνθρώπινη, κίνησηDown;
ιδιωτική
int renderingValue; void render () {
αν (renderingValue == 2) {
// Κάνετε τα πράγματα εδώ
}
και τα πεδία του.
Ανατρέξτε σε μια προεπιλεγμένη κλάση πρόσβασης στο ίδιο πακέτο.
Ας δούμε τι συμβαίνει με ένα διαφορετικό πακέτο.
Ανατρέξτε σε μια προεπιλεγμένη κλάση πρόσβασης σε διαφορετικό πακέτο.
Τα μηνύματα σφάλματος σε αυτές τις εικόνες δείχνουν κάποια προβλήματα με τον κώδικα. Ακολουθεί ένας κατάλογος στοιχείων για αυτά τα δύο κομμάτια κώδικα:
UseSprite
είναι στην ίδια συσκευασία με την κατηγορίαSprite
- .
Η κλάση
UseSpriteμπορεί να δημιουργήσει μια μεταβλητή τύπου
Sprite - .
Ο κώδικας της κλάσης
UseSpriteμπορεί να αναφέρεται στο δημόσιο πεδίο
όνομα - της κλάσης
Sprite
και στο προεπιλεγμένο πεδίοdistanceFromTop
τάξη Sprite
.Η κλάση
UseSpriteδεν μπορεί να παραπέμπει στο ιδιωτικό πεδίο
renderingValue - της κλάσης
Sprite
, παρόλο πουUseSprite
και <βρίσκονται στην ίδια συσκευασία.
Η κλάσηUseSpriteFromOutside
δεν είναι στην ίδια συσκευασία με την κατηγορίαSprite
. - Η κλάση
UseSpriteFromOutside
δεν μπορεί να δημιουργήσει μια μεταβλητή τύπουSprite
. (Ακόμη και μια δήλωση - εισαγωγής
δεν μπορεί να σας σώσει από ένα μήνυμα σφάλματος εδώ.)
Μέσα στην κλάσηUseAccountFromOutside
, οι αναφορές σεsprite. όνομα, σπρίτ. distanceFromTop
και - sprite. renderingValue
είναι όλες χωρίς νόημα επειδή η μεταβλητή
spriteδεν έχει τύπο.