Σε αυτό το άρθρο, θα μάθετε για όλους τους 4 τροποποιητές ορατότητας στο Kotlin και πώς λειτουργούν σε διαφορετικά σενάρια.
Οι τροποποιητές ορατότητας είναι λέξεις-κλειδιά που ορίζουν την ορατότητα (προσβασιμότητα) κλάσεων, αντικειμένων, διεπαφής, κατασκευαστών, συναρτήσεων, ιδιοτήτων και των ρυθμιστών τους. (Δεν μπορείτε να ορίσετε τον τροποποιητή ορατότητας των getters καθώς λαμβάνουν πάντα την ίδια ορατότητα με αυτήν της ιδιοκτησίας.)
Στο άρθρο της τάξης και αντικειμένων Kotlin, μάθατε για τους τροποποιητές ορατότητας public
και private
εν συντομία. Θα μάθετε για δύο ακόμη τροποποιητές ορατότητας protected
και internal
(καθώς και public
και private
) λεπτομερώς.
Τροποποιητές ορατότητας μέσα στο πακέτο
Ένα πακέτο οργανώνει ένα σύνολο σχετικών λειτουργιών, ιδιοτήτων και τάξεων, αντικειμένων και διεπαφών. Προτεινόμενη ανάγνωση: Πακέτα Kotlin
Τροποποιητής | Περιγραφή |
---|---|
δημόσιο | οι δηλώσεις είναι ορατές παντού |
ιδιωτικός | ορατό μέσα στο αρχείο που περιέχει τη δήλωση |
εσωτερικός | ορατό μέσα στην ίδια ενότητα (ένα σύνολο αρχείων Kotlin που έχουν συγκεντρωθεί) |
προστατευμένο | δεν διατίθεται για πακέτα (χρησιμοποιείται για υποκατηγορίες) |
Σημείωση: Εάν δεν έχει οριστεί τροποποιητής ορατότητας, είναι public
από προεπιλογή.
Ας πάρουμε ένα παράδειγμα:
// όνομα αρχείου: hello.kt πακέτο δοκιμής fun function1 () () // δημόσια από προεπιλογή και ορατή παντού ιδιωτική συνάρτηση fun2 () () // ορατή μέσα hello.kt εσωτερική συνάρτηση fun3 () () // ορατή μέσα στο ίδια ενότητα var name = "Foo" // ορατό παντού get () = πεδίο // ορατό μέσα hello.kt (ίδιο με την ιδιότητά του) ιδιωτικό σετ (τιμή) (// ορατό μέσα hello.kt πεδίο = τιμή) ιδιωτική κλάση class1 () // ορατό μέσα hello.kt
Τροποποιητές Ορατότητας Μέσα Μαθήματα και Διεπαφές
Δείτε πώς λειτουργεί ο τροποποιητής ορατότητας για μέλη (συναρτήσεις, ιδιότητες) που δηλώνονται σε μια τάξη:
Τροποποιητής | Περιγραφή |
---|---|
δημόσιο | ορατό σε οποιονδήποτε πελάτη μπορεί να δει την κλάση δήλωσης |
ιδιωτικός | μόνο ορατό μέσα στην τάξη |
προστατευμένο | ορατό μέσα στην τάξη και τις υποκατηγορίες της |
εσωτερικός | ορατό σε οποιονδήποτε πελάτη μέσα στην ενότητα που μπορεί να δει την κλάση δήλωσης |
Σημείωση: Εάν παρακάμψετε ένα protected
μέλος στην παράγωγη κλάση χωρίς να καθορίσετε την ορατότητά του, η ορατότητά του θα είναι επίσης protected
.
Ας πάρουμε ένα παράδειγμα:
ανοιχτή κλάση βάσης () (var a = 1 // δημόσια από προεπιλογή ιδιωτική var b = 2 // ιδιωτική προς βασική κλάση προστατευμένη ανοιχτή val c = 3 // ορατή στη βάση και την παράγωγη κλάση εσωτερική β = 4 // ορατή μέσα στην ίδια ενότητα προστατευμένη διασκέδαση e () () // ορατή στην κατηγορία Base και Derived class) Derived: Base () (// a, c, d και e () της κατηγορίας Base είναι ορατά // b δεν είναι ορατή παράκαμψη val c = 9 // c προστατεύεται) fun main (args: Array) (val base = Base () // base.a και base.d είναι ορατά // base.b, base.c και base .e () δεν είναι ορατά val deriv = = Προέρχεται () // deriv.c δεν είναι ορατό)
Αλλαγή ορατότητας ενός κατασκευαστή
Από προεπιλογή, η ορατότητα ενός κατασκευαστή είναι public
. Ωστόσο, μπορείτε να το αλλάξετε. Για αυτό, πρέπει να προσθέσετε ρητά τη constructor
λέξη-κλειδί.
Ο κατασκευαστής είναι public
από προεπιλογή στο παρακάτω παράδειγμα:
δοκιμή κλάσης (val a: Int) (// κωδικός)
Δείτε πώς μπορείτε να αλλάξετε την ορατότητά του.
class Δοκιμή ιδιωτικός κατασκευαστής (val a: Int) (// κωδικός)
Εδώ είναι ο κατασκευαστής private
.
Σημείωση: Στο Kotlin, οι τοπικές συναρτήσεις, μεταβλητές και τάξεις δεν μπορούν να έχουν τροποποιητές ορατότητας.