Σε αυτό το σεμινάριο, θα μάθουμε για τον Java Access Modifier, τους τύπους του και τον τρόπο χρήσης τους με τη βοήθεια παραδειγμάτων.
Τι είναι οι τροποποιητές πρόσβασης;
Στην Java, οι τροποποιητές πρόσβασης χρησιμοποιούνται για να ορίσουν την προσβασιμότητα (ορατότητα) κλάσεων, διεπαφών, μεταβλητών, μεθόδων, κατασκευαστών, μελών δεδομένων και μεθόδων ρύθμισης. Για παράδειγμα,
class Animal ( public void method1() (… ) private void method2() (… ) )
Στο παραπάνω παράδειγμα, έχουμε δηλώσει 2 μεθόδους: τη μέθοδο1 () και τη μέθοδο2 (). Εδώ,
- Η μέθοδος 1 είναι
public
- Αυτό σημαίνει ότι μπορεί να προσεγγιστεί από άλλες κατηγορίες. - Η μέθοδος 2 είναι
private
- Αυτό σημαίνει ότι δεν είναι δυνατή η πρόσβαση σε άλλες κατηγορίες.
Σημειώστε τη λέξη-κλειδί public
και private
. Αυτοί είναι τροποποιητές πρόσβασης στην Java. Είναι επίσης γνωστοί ως τροποποιητές ορατότητας.
Σημείωση : Δεν μπορείτε να ορίσετε τον τροποποιητή πρόσβασης των μεθόδων getters.
Τύποι τροποποιητή πρόσβασης
Πριν μάθετε σχετικά με τους τύπους τροποποιητών πρόσβασης, βεβαιωθείτε ότι γνωρίζετε για τα πακέτα Java.
Υπάρχουν τέσσερις λέξεις-κλειδιά τροποποιητών πρόσβασης στην Java και είναι:
Τροποποιητής | Περιγραφή |
Προκαθορισμένο | οι δηλώσεις είναι ορατές μόνο μέσα στο πακέτο (ιδιωτικό πακέτο) |
Ιδιωτικός | Οι δηλώσεις είναι ορατές μόνο στην τάξη |
Προστατευμένο | Οι δηλώσεις είναι ορατές στο πακέτο ή σε όλες τις υποκατηγορίες |
Δημόσιο | οι δηλώσεις είναι ορατές παντού |
Προεπιλεγμένος τροποποιητής πρόσβασης
Εάν δεν προσδιορίσουμε ρητά κανένα τροποποιητή πρόσβασης για τάξεις, μεθόδους, μεταβλητές κ.λπ., τότε από προεπιλογή θεωρείται ο προεπιλεγμένος τροποποιητής πρόσβασης. Για παράδειγμα,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Εδώ, η κατηγορία Logger έχει τον προεπιλεγμένο τροποποιητή πρόσβασης. Και η κλάση είναι ορατή σε όλες τις κλάσεις που ανήκουν στο πακέτο defaultPackage. Ωστόσο, εάν προσπαθήσουμε να χρησιμοποιήσουμε την κλάση Logger σε άλλη κλάση εκτός του defaultPackage, θα λάβουμε ένα σφάλμα συλλογής.
Τροποποιητής ιδιωτικής πρόσβασης
Όταν δηλώνονται μεταβλητές και μέθοδοι private
, δεν είναι δυνατή η πρόσβαση τους εκτός της κλάσης. Για παράδειγμα,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
Στο παραπάνω παράδειγμα, έχουμε δηλώσει μια ιδιωτική μεταβλητή με όνομα και μια ιδιωτική μέθοδο display()
. Όταν εκτελούμε το πρόγραμμα, θα λάβουμε το ακόλουθο σφάλμα:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Το σφάλμα δημιουργείται επειδή προσπαθούμε να αποκτήσουμε πρόσβαση στην ιδιωτική μεταβλητή και στην ιδιωτική μέθοδο της κλάσης δεδομένων από την κύρια κλάση.
Ίσως αναρωτιέστε τι εάν χρειαστεί να έχουμε πρόσβαση σε αυτές τις ιδιωτικές μεταβλητές. Σε αυτήν την περίπτωση, μπορούμε να χρησιμοποιήσουμε τη μέθοδο getters and setters. Για παράδειγμα,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Έξοδος :
Το όνομα είναι Programiz
Στο παραπάνω παράδειγμα, έχουμε μια ιδιωτική μεταβλητή που ονομάζεται όνομα. Για να αποκτήσουμε πρόσβαση στη μεταβλητή από την εξωτερική κλάση, χρησιμοποιήσαμε μεθόδους: getName()
και setName()
. Αυτές οι μέθοδοι ονομάζονται getter και setter στην Java.
Εδώ, χρησιμοποιήσαμε τη μέθοδο setter ( setName()
) για να ορίσουμε τιμή στη μεταβλητή και τη μέθοδο getter ( getName()
) για πρόσβαση στη μεταβλητή.
Έχουμε χρησιμοποιήσει τη this
λέξη-κλειδί μέσα στο setName () για να αναφερθούμε στη μεταβλητή της κλάσης. Για να μάθετε περισσότερα σχετικά με αυτήν τη λέξη-κλειδί, επισκεφθείτε Java αυτήν τη λέξη-κλειδί.
Σημείωση : Δεν μπορούμε να δηλώσουμε κλάσεις και διεπαφές ιδιωτικές στην Java. Ωστόσο, οι ένθετες τάξεις μπορούν να δηλωθούν ιδιωτικές. Για να μάθετε περισσότερα, επισκεφτείτε το Java Nested και Inner Class.
Προστατευμένος τροποποιητής πρόσβασης
Όταν δηλώνονται μέθοδοι και μέλη δεδομένων protected
, μπορούμε να έχουμε πρόσβαση σε αυτά στο ίδιο πακέτο, καθώς και από υποκατηγορίες. Για παράδειγμα,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Έξοδος :
Είμαι ζώο
Στο παραπάνω παράδειγμα, έχουμε μια προστατευμένη μέθοδο που ονομάζεται display()
μέσα στην κατηγορία Ζώων. Η τάξη των ζώων κληρονομείται από την κατηγορία σκυλιών. Για να μάθετε περισσότερα σχετικά με την κληρονομιά, επισκεφθείτε το Java Inheritance.
Στη συνέχεια δημιουργήσαμε ένα αντικείμενο σκύλου της κατηγορίας Dog. Χρησιμοποιώντας το αντικείμενο προσπαθήσαμε να αποκτήσουμε πρόσβαση στην προστατευμένη μέθοδο της γονικής τάξης.
Δεδομένου ότι οι προστατευμένες μέθοδοι είναι προσβάσιμες από τις τάξεις των παιδιών, είμαστε σε θέση να αποκτήσουμε πρόσβαση στη μέθοδο της κλάσης των ζώων από την κατηγορία των σκύλων.
Σημείωση : Δεν μπορούμε να δηλώσουμε τάξεις ή διεπαφές protected
στην Java.
Τροποποιητής δημόσιας πρόσβασης
Όταν δηλώνονται μέθοδοι, μεταβλητές, τάξεις και ούτω καθεξής public
, τότε μπορούμε να έχουμε πρόσβαση σε αυτές από οπουδήποτε. Ο τροποποιητής δημόσιας πρόσβασης δεν έχει περιορισμό πεδίου. Για παράδειγμα,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Έξοδος :
Είμαι ζώο. Έχω 4 πόδια.
Εδώ,
- Η δημόσια τάξη Animal είναι προσβάσιμη από την κύρια τάξη.
- Η δημόσια μεταβλητή legCount είναι προσβάσιμη από την κύρια τάξη.
- Η δημόσια μέθοδος
display()
είναι προσβάσιμη από την κύρια τάξη.
Πρόσβαση τροποποιητών συνοψίζονται σε ένα σχήμα

Οι τροποποιητές πρόσβασης χρησιμοποιούνται κυρίως για ενθυλάκωση. Μπορώ να μας βοηθήσετε να ελέγξουμε ποιο μέρος ενός προγράμματος μπορεί να έχει πρόσβαση στα μέλη μιας τάξης. Για να αποτραπεί η κατάχρηση δεδομένων. Για να μάθετε περισσότερα σχετικά με την ενθυλάκωση, επισκεφθείτε το Java Encapsulation.