access modifiers java tutorial with examples
Αυτό το σεμινάριο βίντεο εξηγεί τι είναι οι τροποποιητές πρόσβασης στην Java και πώς να χρησιμοποιήσετε τους προεπιλεγμένους, δημόσιους, προστατευμένους και ιδιωτικούς τροποποιητές πρόσβασης με τη βοήθεια παραδειγμάτων:
Στην Java, έχουμε μαθήματα και αντικείμενα. Αυτές οι τάξεις και τα αντικείμενα περιέχονται σε ένα πακέτο. Εκτός αυτού, τα μαθήματα μπορούν να έχουν ένθετες τάξεις, μεθόδους, μεταβλητές κ.λπ. Καθώς η Java είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού, πρέπει να ακολουθήσουμε την ενθυλάκωση όπου κρύβουμε τις ανεπιθύμητες λεπτομέρειες.
Η Java παρέχει οντότητες που ονομάζονται 'Τροποποιητές πρόσβασης ή προσδιοριστές πρόσβασης' που μας βοηθούν να περιορίσουμε το εύρος ή την ορατότητα ενός πακέτου, κλάσης, κατασκευαστή, μεθόδων, μεταβλητών ή άλλων μελών δεδομένων. Αυτοί οι τροποποιητές πρόσβασης καλούνται επίσης 'Προσδιοριστές ορατότητας'.
Χρησιμοποιώντας τους προσδιοριστές πρόσβασης, μια συγκεκριμένη μέθοδος κλάσης ή μεταβλητή μπορεί να περιοριστεί στην πρόσβαση ή να αποκρυφτεί από τις άλλες κατηγορίες.
=> Ελέγξτε ΟΛΑ τα Εκπαιδευτικά Java εδώ.
πώς να δηλώσετε float στην Ιάβα
Τι θα μάθετε:
- Εκπαιδευτικό βίντεο για τροποποιητές πρόσβασης στην Java
- Πρόσβαση τροποποιητών στην Java
- Τύποι τροποποιητών πρόσβασης στην Java
- συμπέρασμα
Εκπαιδευτικό βίντεο για τροποποιητές πρόσβασης στην Java
Πρόσβαση τροποποιητών στην Java
Οι προσδιοριστές πρόσβασης καθορίζουν επίσης ποια μέλη δεδομένων (μέθοδοι ή πεδία) μιας κλάσης μπορούν να προσπελαστούν από άλλα μέλη δεδομένων τάξεων ή πακέτων κ.λπ.
Οι τροποποιητές στην Java είναι δύο τύπων:
# 1) Τροποποιητές πρόσβασης
Οι τροποποιητές πρόσβασης στην Java μας επιτρέπουν να ορίσουμε το εύρος ή την προσβασιμότητα ή την ορατότητα ενός μέλους δεδομένων είτε πρόκειται για πεδίο, κατασκευαστή, κλάση ή μέθοδο.
# 2) Τροποποιητές χωρίς πρόσβαση
Η Java παρέχει επίσης προσδιοριστές μη πρόσβασης που χρησιμοποιούνται με τάξεις, μεταβλητές, μεθόδους, κατασκευαστές κ.λπ. Οι προσδιοριστές / τροποποιητές χωρίς πρόσβαση καθορίζουν τη συμπεριφορά των οντοτήτων στο JVM.
Ορισμένοι από τους προσδιοριστές / τροποποιητές χωρίς πρόσβαση στην Java είναι:
- στατικός
- τελικός
- αφηρημένη
- παροδικός
- πτητικός
- συγχρονισμένος
- ντόπιος
Έχουμε καλύψει στατικές, συγχρονισμένες και ασταθείς λέξεις-κλειδιά στα προηγούμενα σεμινάρια μας. Θα καλύψουμε τους άλλους τροποποιητές χωρίς πρόσβαση στα μελλοντικά μας σεμινάρια, καθώς είναι εκτός του πεδίου αυτού του σεμιναρίου.
Τύποι τροποποιητών πρόσβασης στην Java
Η Java παρέχει τέσσερις τύπους προσδιοριστών πρόσβασης που μπορούμε να χρησιμοποιήσουμε με τάξεις και άλλες οντότητες.
Αυτά είναι:
# 1) Προεπιλογή: Όταν δεν προσδιορίζεται ένα συγκεκριμένο επίπεδο πρόσβασης, τότε θεωρείται «προεπιλογή». Το πεδίο εφαρμογής του προεπιλεγμένου επιπέδου βρίσκεται εντός του πακέτου.
# 2) Δημόσιο: Αυτό είναι το πιο κοινό επίπεδο πρόσβασης και όταν ο προσδιοριστής δημόσιας πρόσβασης χρησιμοποιείται με μια οντότητα, η συγκεκριμένη οντότητα είναι προσβάσιμη καθ 'όλη τη διάρκεια ή εντός της τάξης, εντός ή εκτός του πακέτου κ.λπ.
# 3) Προστατευμένο: Το επίπεδο προστατευμένης πρόσβασης έχει ένα εύρος που βρίσκεται εντός του πακέτου. Μια προστατευόμενη οντότητα είναι επίσης προσβάσιμη εκτός του πακέτου μέσω κληρονομικής τάξης ή παιδικής τάξης.
# 4) Ιδιωτικό: Όταν μια οντότητα είναι ιδιωτική, τότε δεν είναι δυνατή η πρόσβαση σε αυτήν την οντότητα εκτός της κλάσης. Μια ιδιωτική οντότητα είναι προσβάσιμη μόνο μέσα από την τάξη.
Μπορούμε να συνοψίσουμε τους τροποποιητές πρόσβασης στον παρακάτω πίνακα.
Προσδιορισμός πρόσβασης | Εσωτερική τάξη | Εσωτερικό πακέτο | Υποκατηγορία εξωτερικού πακέτου | Εξωτερικό πακέτο |
---|---|---|---|---|
Ιδιωτικός | Ναί | Μην | Μην | Μην |
Προκαθορισμένο | Ναί | Ναί | Μην | Μην |
Προστατευμένο | Ναί | Ναί | Ναί | Μην |
Δημόσιο | Ναί | Ναί | Ναί | Ναί |
Στη συνέχεια, θα συζητήσουμε λεπτομερώς καθέναν από αυτούς τους προσδιοριστές πρόσβασης.
Προεπιλεγμένοι προσδιοριστές πρόσβασης
Ένας προεπιλεγμένος τροποποιητής πρόσβασης στην Java δεν έχει συγκεκριμένη λέξη-κλειδί. Όποτε ο τροποποιητής πρόσβασης δεν έχει καθοριστεί, τότε θεωρείται ότι είναι ο προεπιλεγμένος. Οι οντότητες όπως τάξεις, μέθοδοι και μεταβλητές μπορούν να έχουν μια προεπιλεγμένη πρόσβαση.
Μια προεπιλεγμένη κλάση είναι προσβάσιμη μέσα στο πακέτο αλλά δεν είναι προσβάσιμη από έξω από το πακέτο, δηλαδή όλες οι κλάσεις μέσα στο πακέτο στις οποίες ορίζεται η προεπιλεγμένη κλάση μπορούν να έχουν πρόσβαση σε αυτήν την κλάση.
Παρομοίως, μια προεπιλεγμένη μέθοδος ή μεταβλητή είναι επίσης προσβάσιμη μέσα στο πακέτο στο οποίο ορίζονται και όχι έξω από το πακέτο.
Το παρακάτω πρόγραμμα δείχνει τον Προεπιλεγμένο τροποποιητή πρόσβασης στην Java.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, έχουμε μια τάξη και μια μέθοδο μέσα σε αυτό χωρίς τροποποιητή πρόσβασης. Ως εκ τούτου, τόσο η εμφάνιση τάξης όσο και η μέθοδος έχουν προεπιλεγμένη πρόσβαση. Τότε βλέπουμε ότι στη μέθοδο, μπορούμε να δημιουργήσουμε απευθείας ένα αντικείμενο της τάξης και να καλέσουμε τη μέθοδο.
Τροποποιητής δημόσιας πρόσβασης
Μια κλάση ή μια μέθοδος ή ένα πεδίο δεδομένων που ορίζεται ως «δημόσιο» είναι προσβάσιμο από οποιαδήποτε κλάση ή πακέτο στο πρόγραμμα Java. Η δημόσια οντότητα είναι προσβάσιμη τόσο εντός του πακέτου όσο και εκτός του πακέτου. Γενικά, ο τροποποιητής δημόσιας πρόσβασης είναι ένας τροποποιητής που δεν περιορίζει καθόλου την οντότητα.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Παραγωγή:
Προσδιοριστής προστατευμένης πρόσβασης
Ο προσδιοριστής προστατευμένης πρόσβασης επιτρέπει την πρόσβαση σε οντότητες μέσω υποκατηγοριών της κλάσης στην οποία δηλώνεται η οντότητα. Δεν έχει σημασία αν η κλάση βρίσκεται στο ίδιο πακέτο ή σε διαφορετικό πακέτο, αλλά εφόσον η κλάση που προσπαθεί να αποκτήσει πρόσβαση σε μια προστατευμένη οντότητα είναι μια υποκατηγορία αυτής της κλάσης, η οντότητα είναι προσβάσιμη.
Σημειώστε ότι μια κλάση και μια διεπαφή δεν μπορούν να προστατευτούν, δηλαδή δεν μπορούμε να εφαρμόσουμε προστατευμένους τροποποιητές σε κλάσεις και διεπαφές.
Ο τροποποιητής προστατευμένης πρόσβασης χρησιμοποιείται συνήθως σε σχέσεις γονέα-παιδιού.
Το παρακάτω πρόγραμμα δείχνει τη χρήση του τροποποιητή προστατευμένης πρόσβασης στην Java.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
Παραγωγή:
Τροποποιητής ιδιωτικής πρόσβασης
Ο «ιδιωτικός» τροποποιητής πρόσβασης είναι αυτός που έχει το χαμηλότερο επίπεδο προσβασιμότητας. Οι μέθοδοι και τα πεδία που δηλώνονται ως ιδιωτικά δεν είναι προσβάσιμα εκτός της τάξης. Είναι προσβάσιμα μόνο μέσα στην τάξη που έχει αυτά τα ιδιωτικά πρόσωπα ως μέλη της.
Σημειώστε ότι οι ιδιωτικές οντότητες δεν είναι καν ορατές στις υποκατηγορίες της κλάσης. Ένας ιδιωτικός τροποποιητής πρόσβασης διασφαλίζει την ενθυλάκωση στην Java.
Μερικά σημεία που πρέπει να σημειωθούν σχετικά με το Private Access Modifier.
- Ο ιδιωτικός τροποποιητής πρόσβασης δεν μπορεί να χρησιμοποιηθεί για τάξεις και διεπαφές.
- Το πεδίο των ιδιωτικών οντοτήτων (μέθοδοι και μεταβλητές) περιορίζεται στην κλάση στην οποία δηλώνονται.
- Μια τάξη με έναν ιδιωτικό κατασκευαστή δεν μπορεί να δημιουργήσει ένα αντικείμενο της κλάσης από οποιοδήποτε άλλο μέρος, όπως η κύρια μέθοδος. (Περισσότερες λεπτομέρειες σχετικά με ιδιωτικούς κατασκευαστές έχουν εξηγηθεί στο προηγούμενο σεμινάριό μας).
Το παρακάτω πρόγραμμα Java χρησιμοποιεί έναν τροποποιητή ιδιωτικής πρόσβασης.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
Παραγωγή:
Το παραπάνω πρόγραμμα δίνει σφάλμα συλλογής καθώς προσπαθούμε να αποκτήσουμε πρόσβαση σε ιδιωτικά μέλη δεδομένων χρησιμοποιώντας το αντικείμενο κλάσης.
Υπάρχει όμως μια μέθοδος πρόσβασης σε μεταβλητές ιδιωτικών μελών. Αυτή η μέθοδος χρησιμοποιεί getter και ρυθμιστές στην Java. Έτσι, παρέχουμε μια μέθοδο δημόσιας λήψης στην ίδια τάξη στην οποία δηλώνεται η ιδιωτική μεταβλητή, έτσι ώστε ο χρήστης να μπορεί να διαβάσει την τιμή της ιδιωτικής μεταβλητής.
ποιος είναι ο καλύτερος μεταγλωττιστής c ++
Παρομοίως, παρέχουμε μια μέθοδο δημόσιου ρυθμιστή που μας επιτρέπει να ορίσουμε μια τιμή για την ιδιωτική μεταβλητή.
Το ακόλουθο πρόγραμμα Java δείχνει τη χρήση μεθόδων getter και setter για ιδιωτικές μεταβλητές στην Java.
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
Παραγωγή:
Το παραπάνω πρόγραμμα έχει μια κλάση με μεταβλητή ιδιωτικής συμβολοσειράς. Παρέχουμε μια δημόσια μέθοδο getName μέλους που επιστρέφει την τιμή της ιδιωτικής μεταβλητής. Παρέχουμε επίσης μια δημόσια μέθοδο setName στην κλάση που παίρνει μια συμβολοσειρά ως όρισμα και την εκχωρεί στην ιδιωτική μεταβλητή.
Καθώς και οι δύο μέθοδοι είναι δημόσιες, μπορούμε εύκολα να τις προσπελάσουμε χρησιμοποιώντας το αντικείμενο της τάξης. Με αυτόν τον τρόπο μπορούμε να ξεπεράσουμε το σφάλμα συλλογής που εμφανίζεται κάθε φορά όταν προσπαθούμε να έχουμε πρόσβαση στα προσωπικά δεδομένα των μελών της τάξης.
Συχνές Ερωτήσεις
Ε # 1) Πόσοι τροποποιητές πρόσβασης υπάρχουν στην Java;
Απάντηση: Η Java παρέχει τέσσερις τροποποιητές, δηλαδή προεπιλογή, δημόσια, προστατευμένη και ιδιωτική.
Q # 2) Τι είναι οι τροποποιητές πρόσβασης και οι τροποποιητές μη πρόσβασης στην Java;
Απάντηση: Οι τροποποιητές πρόσβασης ορίζουν την ορατότητα ή το εύρος μιας οντότητας προγράμματος όπως μια κλάση ή μια μέθοδο ή μια μεταβλητή ή έναν κατασκευαστή. Οι τροποποιητές χωρίς πρόσβαση καθορίζουν τη συμπεριφορά μιας οντότητας. Για παράδειγμα, μια συγχρονισμένη μέθοδος ή ένα μπλοκ δείχνει ότι μπορεί να λειτουργήσει σε ένα περιβάλλον πολλαπλών νημάτων, μια τελική μεταβλητή δείχνει ότι είναι μια σταθερά.
Q # 3) Γιατί είναι σημαντικοί οι Πρόσβαση πρόσβασης;
Απάντηση: Οι τροποποιητές καθορίζουν ποια κλάση μπορεί να έχει πρόσβαση σε άλλες κατηγορίες ή μεθόδους ή μεταβλητές. Χρησιμοποιώντας προσδιοριστές πρόσβασης μπορούμε να περιορίσουμε την πρόσβαση σε διάφορες κατηγορίες, μεθόδους, κατασκευαστές και μεταβλητές και επίσης να διασφαλίσουμε την ενθυλάκωση και την επαναχρησιμοποίηση οντοτήτων Java.
Q # 4) Ποιοι τροποποιητές δεν χρησιμοποιούνται για την τάξη;
Απάντηση: Οι προστατευμένοι και οι ιδιωτικοί τροποποιητές δεν χρησιμοποιούνται για μια τάξη.
Q # 5) Τι είναι οι τροποποιητές χωρίς πρόσβαση;
Απάντηση: Οι τροποποιητές που καθορίζουν τη συμπεριφορά οντοτήτων όπως κλάση, μέθοδος ή μεταβλητές με τις οποίες σχετίζονται είναι τροποποιητές χωρίς πρόσβαση. Όπως υποδηλώνει το όνομα δεν καθορίζουν την πρόσβαση. Η Java παρέχει διάφορους τροποποιητές χωρίς πρόσβαση, όπως στατικούς, τελικούς, συγχρονισμένους, πτητικούς, αφηρημένους κ.λπ.
Περισσότερα σχετικά με τους τροποποιητές ορατότητας
Η Java παρέχει πολλούς τροποποιητές για πρόσβαση στη μεταβλητή, τις μεθόδους και τους κατασκευαστές.
Υπάρχουν 4 τύποι μεταβλητών πρόσβασης στην Java:
- Ιδιωτικός
- Δημόσιο
- Προκαθορισμένο
- Προστατευμένο
# 1) Ιδιωτικό
Εάν μια μεταβλητή δηλώνεται ως ιδιωτική, τότε μπορεί να προσπελαστεί μέσα στην τάξη. Αυτή η μεταβλητή δεν θα είναι διαθέσιμη εκτός της τάξης. Έτσι, τα εξωτερικά μέλη δεν έχουν πρόσβαση στα ιδιωτικά μέλη.
Σημείωση: Οι τάξεις και οι διεπαφές δεν μπορούν να είναι ιδιωτικές.
# 2) Δημόσιο
Μέθοδοι / μεταβλητές με δημόσιους τροποποιητές είναι προσβάσιμες από όλες τις άλλες κατηγορίες του έργου.
# 3) Προστατευμένο
Εάν μια μεταβλητή δηλώνεται ως προστατευμένη, τότε μπορεί να έχει πρόσβαση στις ίδιες κλάσεις πακέτων και στην υποκατηγορία οποιουδήποτε άλλου πακέτου.
Σημείωση: Ο τροποποιητής προστατευμένης πρόσβασης δεν μπορεί να χρησιμοποιηθεί για κλάση και διεπαφές.
# 4) Προεπιλεγμένος τροποποιητής πρόσβασης
Εάν μια μεταβλητή / μέθοδος ορίζεται χωρίς καμία λέξη-κλειδί τροποποιητή πρόσβασης, τότε αυτή θα έχει μια προεπιλεγμένη πρόσβαση τροποποιητή.
ερωτήσεις και απαντήσεις συνέντευξης .net για έμπειρους
Τροποποιητές πρόσβασης | Ορατότητα |
---|---|
Δημόσιο | Ορατό σε όλες τις τάξεις. |
Προστατευμένο | Ορατό σε τάξεις με το πακέτο και τις υποκατηγορίες του άλλου πακέτου. |
Χωρίς τροποποιητή πρόσβασης (προεπιλογή) | Ορατό στα μαθήματα με το πακέτο |
ιδιωτικός | Ορατό με την τάξη. Δεν είναι προσβάσιμο εκτός τάξης. |
Κατηγορία επίδειξης:
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
Πρόσβαση στα μέλη της τάξης σε άλλη τάξη:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Παραγωγή:
Πρόσβαση στα δημόσια μέλη:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Παραγωγή:
Αγγλος αστυφύλακας
Σημαντικά σημεία:
- Οι προσδιοριστές πρόσβασης καθορίζουν την ορατότητα της κλάσης.
- Εάν δεν αναφέρεται λέξη-κλειδί, τότε αυτός είναι ο προεπιλεγμένος τροποποιητής πρόσβασης.
- Τέσσερις τροποποιητές στην Java περιλαμβάνουν δημόσιο, ιδιωτικό, προστατευμένο και προεπιλεγμένο.
- Δεν είναι δυνατή η χρήση ιδιωτικών και προστατευμένων λέξεων-κλειδιών για τάξεις και διεπαφές.
συμπέρασμα
Σε αυτό το σεμινάριο, διερευνήσαμε λεπτομερώς τους Access Modifiers στην Java. Η Java παρέχει τέσσερις τύπους τροποποιητών πρόσβασης ή προσδιοριστών ορατότητας, δηλαδή προεπιλογή, δημόσιος, ιδιωτικός και προστατευμένος. Ο προεπιλεγμένος τροποποιητής δεν έχει καμία λέξη-κλειδί που να σχετίζεται με αυτόν.
Όταν μια τάξη ή μέθοδος ή μεταβλητή δεν έχει συσχετισμένο προσδιοριστή πρόσβασης, υποθέτουμε ότι έχει προεπιλεγμένη πρόσβαση. Ο τροποποιητής δημόσιας πρόσβασης επιτρέπει την πρόσβαση σε όλα, είτε εντός είτε εκτός της τάξης ή του πακέτου. Δεν υπάρχει όριο πρόσβασης στην περίπτωση του δημόσιου τροποποιητή.
Ο προσδιοριστής προστατευμένης ορατότητας επιτρέπει την πρόσβαση μόνο σε υποκατηγορίες που κληρονομούν την κλάση στην οποία δηλώνονται τα προστατευμένα μέλη. Ο τροποποιητής ιδιωτικής πρόσβασης επιτρέπει την ελάχιστη προσβασιμότητα με τα μέλη ιδιωτικών δεδομένων να είναι προσβάσιμη μόνο εντός της τάξης.
Οι τροποποιητές περιορίζουν το εύρος των μελών δεδομένων όπως τάξεις, κατασκευαστές, μεθόδους και μεταβλητές και καθορίζουν το όριο για το ποιες κλάσεις ή πακέτα μπορούν να έχουν πρόσβαση σε αυτά. Οι προσδιοριστές πρόσβασης ενθαρρύνουν την ενθυλάκωση και την επαναχρησιμοποίηση στην Java. Σημειώστε ότι οι κλάσεις και η διεπαφή δεν μπορούν να προστατευτούν ή να είναι ιδιωτικές.
=> Επισκεφθείτε εδώ για να μάθετε Java από το μηδέν.
Συνιστώμενη ανάγνωση
- Εκμάθηση Java Reflection με παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Εισαγωγή στη γλώσσα προγραμματισμού Java - Video Tutorial
- Εκμάθηση Java SWING: Container, Components and Event Handling
- Java String με String Buffer και String Builder Tutorial
- Ανάπτυξη Java: Δημιουργία και εκτέλεση αρχείου Java JAR
- Java Virtual Machine: Πώς βοηθά το JVM στην εκτέλεση της εφαρμογής Java
- Εκμάθηση Java Συλλογές Πλαίσιο (JCF)