what is static keyword java
Αυτό το σεμινάριο εξηγεί τη στατική λέξη-κλειδί στην Java και τη χρήση του σε μεταβλητές, μεθόδους, μπλοκ και τάξεις. Αναφέρει επίσης τη διαφορά μεταξύ στατικών και μη στατικών μελών:
Η Java υποστηρίζει διάφορους τύπους δηλώσεων για να δείξει το εύρος και τη συμπεριφορά των μεταβλητών, μεθόδων, τάξεων κ.λπ. Για παράδειγμα, η λέξη-κλειδί τελική, σφραγισμένη, στατική κ.λπ. Όλες αυτές οι δηλώσεις έχουν κάποια συγκεκριμένη σημασία όταν χρησιμοποιούνται στο πρόγραμμα Java.
Θα διερευνήσουμε όλες αυτές τις λέξεις-κλειδιά καθώς προχωράμε σε αυτό το σεμινάριο. Εδώ, θα συζητήσουμε τις λεπτομέρειες μιας από τις πιο σημαντικές λέξεις-κλειδιά στην Java, δηλαδή 'στατική'.
Τι θα μάθετε:
- Στατική λέξη-κλειδί στην Java
- συμπέρασμα
Στατική λέξη-κλειδί στην Java
Ένα μέλος σε ένα πρόγραμμα Java μπορεί να δηλωθεί ως στατικό χρησιμοποιώντας τη λέξη-κλειδί «στατική» πριν από τη δήλωση / ορισμό του. Όταν ένα μέλος δηλώνεται στατικό, τότε ουσιαστικά σημαίνει ότι το μέλος μοιράζεται όλες τις εμφανίσεις μιας τάξης χωρίς να δημιουργεί αντίγραφα ανά παρουσία.
Συνεπώς, το static είναι ένας τροποποιητής εκτός κλάσης που χρησιμοποιείται στην Java και μπορεί να εφαρμοστεί στα ακόλουθα μέλη:
- Μεταβλητές
- Μέθοδοι
- Μπλοκ
- Μαθήματα (πιο συγκεκριμένα, ένθετα μαθήματα)
Όταν ένα μέλος δηλώνεται στατικό, τότε μπορεί να προσεγγιστεί χωρίς τη χρήση αντικειμένου. Αυτό σημαίνει ότι προτού δημιουργηθεί μια τάξη, το στατικό μέλος είναι ενεργό και προσβάσιμο. Σε αντίθεση με άλλα μη στατικά μέλη της τάξης που παύουν να υπάρχουν όταν το αντικείμενο της τάξης είναι εκτός πεδίου, το στατικό μέλος είναι προφανώς ενεργό.
Στατική μεταβλητή σε Java
Μια μεταβλητή μέλους μιας κλάσης που δηλώνεται ως στατική ονομάζεται Στατική μεταβλητή. Ονομάζεται επίσης ως «μεταβλητή κλάσης». Μόλις η μεταβλητή δηλωθεί ως στατική, η μνήμη εκχωρείται μόνο μία φορά και όχι κάθε φορά που δημιουργείται μια τάξη. Ως εκ τούτου, μπορείτε να αποκτήσετε πρόσβαση στη στατική μεταβλητή χωρίς αναφορά σε ένα αντικείμενο.
Το ακόλουθο πρόγραμμα Java απεικονίζει τη χρήση στατικών μεταβλητών:
class Main { // static variables a and b static int a = 10; static int b; static void printStatic() { a = a /2; b = a; System.out.println('printStatic::Value of a : '+a + ' Value of b : '+b); } public static void main(String() args) { printStatic(); b = a*5; a++; System.out.println('main::Value of a : '+a + ' Value of b : '+b); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, έχουμε δύο στατικές μεταβλητές, δηλαδή a και b. Τροποποιούμε αυτές τις μεταβλητές σε μια συνάρτηση 'printStatic' καθώς και στο 'main'. Σημειώστε ότι οι τιμές αυτών των στατικών μεταβλητών διατηρούνται σε όλες τις συναρτήσεις ακόμα και όταν τελειώνει το εύρος της συνάρτησης. Η έξοδος δείχνει τις τιμές των μεταβλητών σε δύο συναρτήσεις.
Γιατί χρειαζόμαστε στατικές μεταβλητές και πού είναι χρήσιμες;
Οι στατικές μεταβλητές είναι πιο χρήσιμες σε εφαρμογές που χρειάζονται μετρητές. Όπως γνωρίζετε, οι μετρητές θα δώσουν λανθασμένες τιμές εάν δηλωθούν ως κανονικές μεταβλητές.
Για παράδειγμα, εάν έχετε μια κανονική μεταβλητή που έχει οριστεί ως μετρητής σε μια εφαρμογή που έχει μια τάξη π.χ. αυτοκίνητο. Στη συνέχεια, όποτε δημιουργούμε ένα αντικείμενο αυτοκινήτου, η κανονική μεταβλητή μετρητή θα αρχικοποιείται με κάθε παρουσία. Αλλά αν έχουμε μια μεταβλητή μετρητή ως στατική ή μεταβλητή κλάσης, τότε θα αρχικοποιηθεί μόνο μία φορά όταν δημιουργείται η τάξη.
Αργότερα, με κάθε παρουσία της τάξης, αυτός ο μετρητής θα αυξάνεται από έναν. Αυτό είναι διαφορετικό από την κανονική μεταβλητή όπου με κάθε παρουσία ο μετρητής θα αυξάνεται αλλά η τιμή του μετρητή θα είναι πάντα 1.
Ως εκ τούτου, ακόμη και αν δημιουργήσετε εκατό αντικείμενα του αυτοκινήτου της κατηγορίας, τότε ο μετρητής ως κανονική μεταβλητή θα έχει πάντα την τιμή ως 1 ενώ, με μια στατική μεταβλητή, θα εμφανίζει τη σωστή μέτρηση των 100.
Δίνεται παρακάτω ένα άλλο παράδειγμα στατικών μετρητών στην Java:
class Counter { static int count=0;//will get memory only once and retain its value Counter() { count++;//incrementing the value of static variable System.out.println(count); } } class Main { public static void main(String args()) { System.out.println('Values of static counter:'); Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); } }
Παραγωγή:
Η λειτουργία της στατικής μεταβλητής είναι εμφανής στο παραπάνω πρόγραμμα. Έχουμε δηλώσει τον αριθμό της στατικής μεταβλητής με αρχική τιμή = 0. Στη συνέχεια, στον κατασκευαστή της κλάσης, αυξάνουμε τη στατική μεταβλητή.
Στην κύρια συνάρτηση, δημιουργούμε τρία αντικείμενα του μετρητή τάξης. Η έξοδος δείχνει την τιμή της στατικής μεταβλητής κάθε φορά που δημιουργείται το αντικείμενο μετρητή. Βλέπουμε ότι με κάθε αντικείμενο που δημιουργείται, η υπάρχουσα στατική μεταβλητή τιμή αυξάνεται και δεν επαναρυθμίζεται.
Στατική μέθοδος Java
Μια μέθοδος στο Java είναι στατική όταν προηγείται η λέξη-κλειδί «στατική».
Μερικά σημεία που πρέπει να θυμάστε σχετικά με τη στατική μέθοδο περιλαμβάνουν:
εργαλεία δοκιμών αυτοματισμού για εφαρμογές ιστού
- Μια στατική μέθοδος ανήκει στην τάξη σε σχέση με άλλες μη στατικές μεθόδους που επικαλούνται χρησιμοποιώντας την παρουσία μιας κλάσης.
- Για να καλέσετε μια στατική μέθοδο, δεν χρειάζεστε ένα αντικείμενο κλάσης.
- Τα μέλη στατικών δεδομένων της τάξης είναι προσβάσιμα στη στατική μέθοδο. Η στατική μέθοδος μπορεί ακόμη και να αλλάξει τις τιμές του μέλους στατικών δεδομένων.
- Μια στατική μέθοδος δεν μπορεί να έχει αναφορά στα μέλη «αυτό» ή «σούπερ». Ακόμα κι αν μια στατική μέθοδος προσπαθήσει να τις παραπέμψει, θα είναι ένα σφάλμα μεταγλωττιστή.
- Όπως στατικά δεδομένα, η στατική μέθοδος μπορεί επίσης να καλέσει άλλες στατικές μεθόδους.
- Μια στατική μέθοδος δεν μπορεί να αναφέρεται σε μη στατικά μέλη δεδομένων ή μεταβλητές και δεν μπορεί να καλεί μη στατικές μεθόδους.
Το ακόλουθο πρόγραμμα δείχνει την εφαρμογή της στατικής μεθόδου στην Java:
class Main { // static method static void static_method() { System.out.println('Static method in Java...called without any object'); } public static void main(String() args) { static_method(); } }
Παραγωγή:
Αυτή είναι μια απλή απεικόνιση. Ορίζουμε μια στατική μέθοδο που απλά εκτυπώνει ένα μήνυμα. Στη συνέχεια, στην κύρια συνάρτηση, η στατική μέθοδος καλείται χωρίς κανένα αντικείμενο ή παρουσία μιας κλάσης.
Ένα άλλο παράδειγμα εφαρμογής στατικής λέξης-κλειδιού στην Java.
class Main { // static variable static int count_static = 5; // instance variable int b = 10; // static method static void printStatic() { count_static = 20; System.out.println('static method printStatic'); // b = 20; // compilation error 'error: non-static variable b cannot be referenced from a static context' //inst_print(); // compilation error 'non-static method inst_print() cannot be referenced from a static //context' //System.out.println(super.count_static); // compiler error 'non-static variable super cannot be //referenced from a static context' } // instance method void inst_print() { System.out.println('instance method inst_print'); } public static void main(String() args) { printStatic(); } }
Στο παραπάνω πρόγραμμα, όπως μπορείτε να δείτε, έχουμε δύο μεθόδους. Η μέθοδος printStatic είναι μια στατική μέθοδος ενώ το inst_print είναι μια μέθοδο παρουσίας. Έχουμε επίσης δύο μεταβλητές, το static_count είναι μια στατική μεταβλητή και το b είναι μια μεταβλητή παρουσίας.
Στη στατική μέθοδο - printStatic, πρώτα, εμφανίζουμε ένα μήνυμα και μετά προσπαθούμε να αλλάξουμε την τιμή της μεταβλητής παρουσίας b και επίσης να καλέσουμε τη μη στατική μέθοδο.
Στη συνέχεια, προσπαθούμε να χρησιμοποιήσουμε τη λέξη-κλειδί «σούπερ».
b = 20;
inst_print ();
System.out.println (super.count_static);
Όταν εκτελούμε το πρόγραμμα με τις παραπάνω γραμμές, λαμβάνουμε σφάλματα συλλογής για τη χρήση μεταβλητών παρουσίας, την κλήση μη στατικών μεθόδων και την αναφορά σούπερ σε στατικό περιβάλλον. Αυτοί είναι οι περιορισμοί της στατικής μεθόδου.
Όταν σχολιάζουμε τις παραπάνω τρεις γραμμές, μόνο τότε το παραπάνω πρόγραμμα λειτουργεί καλά και παράγει την ακόλουθη έξοδο.
Παραγωγή:
Υπερφόρτωση και παράκαμψη της στατικής μεθόδου
Όπως γνωρίζετε όλοι, τόσο το Overloading όσο και το Overriding είναι τα χαρακτηριστικά του OOPS και βοηθούν στον πολυμορφισμό. Η υπερφόρτωση μπορεί να ταξινομηθεί ως πολυμορφισμός μεταγλώττισης, όπου μπορείτε να έχετε μεθόδους με το ίδιο όνομα αλλά διαφορετικές λίστες παραμέτρων.
Η παράκαμψη είναι ένα χαρακτηριστικό του πολυμορφισμού χρόνου εκτέλεσης και σε αυτό, η μέθοδος βασικής κλάσης παρακάμπτεται στην παράγωγη κλάση έτσι ώστε η υπογραφή της μεθόδου ή το πρωτότυπο να είναι η ίδια αλλά ο ορισμός διαφέρει.
Ας συζητήσουμε πώς η υπερφόρτωση και η παράκαμψη επηρεάζουν τη στατική τάξη στην Java.
Υπερφόρτωση
Μπορείτε να υπερφορτώσετε μια στατική μέθοδο στην Java με διαφορετικές λίστες παραμέτρων αλλά με το ίδιο όνομα.
Το παρακάτω πρόγραμμα δείχνει Υπερφόρτωση:
public class Main { public static void static_method() { System.out.println('static_method called '); } public static void static_method(String msg) { System.out.println('static_method(string) called with ' + msg); } public static void main(String args()) { static_method(); static_method('Hello, World!!'); } }
Παραγωγή:
Αυτό το πρόγραμμα έχει δύο στατικές μεθόδους με το ίδιο όνομα «static_method» αλλά διαφορετική λίστα επιχειρημάτων. Η πρώτη μέθοδος δεν παίρνει κανένα όρισμα και η δεύτερη μέθοδος παίρνει ένα όρισμα συμβολοσειράς.
Ένα σημείο που πρέπει να σημειωθεί είναι ότι δεν μπορείτε να υπερφορτώσετε τη μέθοδο μόνο ανάλογα με τη «στατική» λέξη-κλειδί. Για παράδειγμα, εάν έχετε μια μέθοδο εμφάνισης «άθροισμα» και εάν ορίσετε μια άλλη μέθοδο «άθροισμα» και την δηλώσετε ως στατική, τότε δεν θα λειτουργήσει. Αυτή η προσπάθεια υπερφόρτωσης με βάση μια «στατική» λέξη-κλειδί θα οδηγήσει σε αποτυχία συλλογής.
Παράκαμψη
Καθώς οι στατικές μέθοδοι επικαλούνται χωρίς κανένα αντικείμενο της κλάσης, ακόμα κι αν έχετε μια στατική μέθοδο με την ίδια υπογραφή στην παράγωγη κλάση, δεν θα είναι υπερισχύουσα. Αυτό συμβαίνει επειδή δεν υπάρχει πολυμορφισμός χρόνου εκτέλεσης χωρίς παρουσία.
Ως εκ τούτου, δεν μπορείτε να παρακάμψετε μια στατική μέθοδο. Αλλά αν υπάρχει καθόλου στατική μέθοδος με την ίδια υπογραφή στην παράγωγη κλάση, τότε η μέθοδος κλήσης δεν εξαρτάται από τα αντικείμενα στο χρόνο εκτέλεσης αλλά εξαρτάται από τον μεταγλωττιστή.
Πρέπει να σημειώσετε ότι αν και οι στατικές μέθοδοι δεν μπορούν να παρακαμφθούν, η γλώσσα Java δεν δίνει σφάλματα μεταγλωττιστή όταν έχετε μια μέθοδο στην παράγωγη κλάση με την ίδια υπογραφή με μια μέθοδο βασικής κλάσης.
Η ακόλουθη εφαρμογή αποδεικνύει αυτό το σημείο.
classBase_Class { // Static method in base class which will be hidden in substatic_displayclass public static void static_display() { System.out.println('Base_Class::static_display'); } } classDerived_Class extends Base_Class { public static void static_display() { System.out.println('Derived_Class::static_display'); } } public class Main { public static void main(String args( )) { Base_Class obj1 = new Base_Class(); Base_Class obj2 = new Derived_Class(); Derived_Class obj3 = new Derived_Class(); obj1.static_display(); obj2.static_display(); obj3.static_display(); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, μπορείτε να δείτε ότι η στατική μέθοδος που καλείται δεν εξαρτάται από το αντικείμενο στο οποίο δείχνει ο δείκτης. Αυτό συμβαίνει επειδή τα αντικείμενα δεν χρησιμοποιούνται καθόλου με στατικές μεθόδους.
Στατικός αποκλεισμός στην Java
Ακριβώς όπως έχετε μπλοκ λειτουργιών σε γλώσσες προγραμματισμού όπως C ++, C #, κλπ. Στην Java, υπάρχει επίσης ένα ειδικό μπλοκ που ονομάζεται 'στατικό' μπλοκ που συνήθως περιλαμβάνει ένα μπλοκ κώδικα που σχετίζεται με στατικά δεδομένα.
Αυτό το στατικό μπλοκ εκτελείται τη στιγμή που δημιουργείται το πρώτο αντικείμενο της κλάσης (ακριβώς κατά τη στιγμή της φόρτωσης της κλάσης) ή όταν χρησιμοποιείται το στατικό μέλος μέσα στο μπλοκ.
Το παρακάτω πρόγραμμα δείχνει τη χρήση ενός στατικού μπλοκ.
class Main { static int sum = 0; static int val1 = 5; static int val2; // static block static { sum = val1 + val2; System.out.println('In static block, val1: ' + val1 + ' val2: '+ val2 + ' sum:' + sum); val2 = val1 * 3; sum = val1 + val2; } public static void main(String() args) { System.out.println('In main function, val1: ' + val1 + ' val2: '+ val2 + ' sum:' + sum); } }
Παραγωγή:
ποια είναι η φάση ανάλυσης στο sdlc;
Σημειώστε τη σειρά εκτέλεσης των δηλώσεων στο παραπάνω πρόγραμμα. Τα περιεχόμενα του στατικού μπλοκ εκτελούνται πρώτα ακολουθούμενο από το κύριο πρόγραμμα. Οι στατικές μεταβλητές άθροισμα και val1 έχουν αρχικές τιμές ενώ το val2 δεν έχει αρχικοποιηθεί (από προεπιλογή στο 0). Στη συνέχεια, στο στατικό μπλοκ val2 εξακολουθεί να μην έχει τιμή και ως εκ τούτου η τιμή του εμφανίζεται ως 0.
Η μεταβλητή val2 εκχωρείται τιμή μετά την εκτύπωση στο στατικό μπλοκ και το άθροισμα υπολογίζεται εκ νέου. Επομένως, στην κύρια συνάρτηση, έχουμε διαφορετικές τιμές αθροίσματος και val2.
Εάν καθορίσετε έναν κατασκευαστή, τότε τα περιεχόμενα του στατικού μπλοκ εκτελούνται ακόμη και πριν από τον κατασκευαστή. Τα στατικά μπλοκ χρησιμοποιούνται ως επί το πλείστον για την προετοιμασία στατικών μελών της τάξης και άλλων αρχικοτήτων που σχετίζονται με στατικά μέλη.
Στατική τάξη Java
Στην Java, έχετε στατικά μπλοκ, στατικές μεθόδους, ακόμη και στατικές μεταβλητές. Ως εκ τούτου, είναι προφανές ότι μπορείτε επίσης να έχετε στατικές τάξεις. Στην Java, είναι δυνατό να υπάρχει μια τάξη μέσα σε μια άλλη τάξη και αυτό ονομάζεται Nested class. Η τάξη που περικλείει την ένθετη τάξη ονομάζεται κλάση Outer.
Στην Java, αν και μπορείτε να δηλώσετε μια ένθετη τάξη ως Στατική, δεν είναι δυνατό να έχετε την εξωτερική κατηγορία ως Στατική.
Ας εξερευνήσουμε τώρα τις στατικές ένθετες τάξεις στην Java.
Στατική ένθετη τάξη στην Ιάβα
Όπως ήδη αναφέρθηκε, μπορείτε να δηλώσετε μια ένθετη τάξη στην Java ως στατική. Η στατική ένθετη τάξη διαφέρει από τη μη στατική ένθετη τάξη (εσωτερική κλάση) σε ορισμένες πτυχές όπως αναφέρονται παρακάτω.
Σε αντίθεση με τη μη στατική ένθετη τάξη, η ένθετη στατική τάξη δεν χρειάζεται αναφορά εξωτερικής κλάσης.
Μια στατική ένθετη τάξη μπορεί να έχει πρόσβαση μόνο στατικά μέλη της εξωτερικής τάξης, έναντι των μη στατικών τάξεων που μπορούν να έχουν πρόσβαση στατικά καθώς και μη στατικά μέλη της εξωτερικής τάξης.
Ένα παράδειγμα στατικής ένθετης τάξης δίνεται παρακάτω.
class Main{ private static String str = 'SoftwareTestingHelp'; //Static nested class static class NestedClass{ //non-static method public void display() { System.out.println('Static string in OuterClass: ' + str); } } public static void main(String args()) { Main.NestedClassobj = new Main.NestedClass(); obj.display(); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, βλέπετε ότι η στατική ένθετη κλάση μπορεί να έχει πρόσβαση στη στατική μεταβλητή (string) από την εξωτερική κλάση.
Στατική εισαγωγή στην Java
Όπως γνωρίζετε, συνήθως συμπεριλαμβάνουμε διάφορα πακέτα και προκαθορισμένη λειτουργικότητα στο πρόγραμμα Java χρησιμοποιώντας την οδηγία «εισαγωγή». Η χρήση της λέξης στατική με την οδηγία εισαγωγής σάς επιτρέπει να χρησιμοποιείτε τη λειτουργικότητα της κλάσης χωρίς να χρησιμοποιείτε το όνομα κλάσης.
unix shell scripting παραδείγματα για αρχάριους
Παράδειγμα:
import static java.lang.System.*; class Main { public static void main(String() args) { //here we import System class using static, hence we can directly use functionality out.println('demonstrating static import'); } }
Παραγωγή:
Σε αυτό το πρόγραμμα, χρησιμοποιούμε στατική εισαγωγή για την κλάση java.lang.System.
Σημείωση: Στην κύρια λειτουργία, μόλις χρησιμοποιήσαμε το out.println για την εμφάνιση του μηνύματος.
Αν και το στατικό χαρακτηριστικό εισαγωγής κάνει τον κώδικα πιο περιεκτικό και αναγνώσιμο, μερικές φορές δημιουργεί ασάφεια ειδικά όταν ορισμένα πακέτα έχουν τις ίδιες λειτουργίες. Ως εκ τούτου, η στατική εισαγωγή πρέπει να χρησιμοποιείται μόνο όταν είναι εξαιρετικά απαραίτητη.
Στατικό έναντι μη στατικό
Ας συζητήσουμε τις σημαντικές διαφορές μεταξύ στατικών και μη στατικών μελών της Java.
Παρατίθενται παρακάτω οι διαφορές μεταξύ Στατικές και μη στατικές μεταβλητές .
Στατικές μεταβλητές | Μη στατικές μεταβλητές |
---|---|
Μπορείτε να έχετε πρόσβαση μόνο με όνομα ονόματος τάξης. | Απαιτείται πρόσβαση σε αντικείμενα μιας τάξης. |
Είναι προσβάσιμα τόσο σε στατικές όσο και σε μη στατικές μεθόδους. | Είναι προσβάσιμα μόνο σε μη στατικές μεθόδους. |
Μια μνήμη για στατική μεταβλητή εκχωρείται μόνο μία φορά ανά τάξη. | Μια μνήμη για μη στατικές μεταβλητές εκχωρείται ανά αντικείμενο. |
Κοινή χρήση από όλα τα αντικείμενα της τάξης. | Δημιουργείται ένα αντίγραφο της μεταβλητής ανά αντικείμενο. |
Έχει παγκόσμιο εύρος και είναι διαθέσιμο σε όλες τις μεθόδους και τα μπλοκ. | Έχει τοπικό εύρος και είναι ορατό σε αντικείμενα της τάξης. |
Παρακάτω δίνεται η διαφορά μεταξύ στατικών και μη στατικών μεθόδων .
Στατικές μέθοδοι | Μη στατικές μέθοδοι |
---|---|
Μια μέθοδος που προηγείται από μια στατική λέξη-κλειδί και είναι διαθέσιμη σε επίπεδο τάξης. | Μια μέθοδος που δεν προηγείται από στατική λέξη-κλειδί και είναι διαθέσιμη για καθεμία από τις εμφανίσεις της τάξης. |
Υποστηρίζει χρόνο μεταγλώττισης ή πρώιμη δέσμευση. | Υποστηρίζει χρόνο εκτέλεσης ή δυναμική σύνδεση. |
Μπορεί να έχει πρόσβαση μόνο στατικά δεδομένα μελών της κατηγορίας του και οποιασδήποτε άλλης κλάσης. | Μπορεί να έχει πρόσβαση στα στατικά καθώς και στα μη στατικά μέλη της τάξης και σε άλλες τάξεις. |
Οι στατικές μέθοδοι δεν μπορούν να παρακαμφθούν. | Μπορεί να παρακαμφθεί. |
Η μνήμη εκχωρείται μόνο μία φορά. Ως εκ τούτου, η μνήμη που χρησιμοποιείται είναι μικρότερη. | Η κατανάλωση μνήμης είναι μεγαλύτερη δεδομένου ότι η μνήμη κατανέμεται κάθε φορά που καλείται η μέθοδος. |
Στατικό vs Τελικό
Το στατικό και το τελικό είναι δύο λέξεις-κλειδιά στην Java που μπορούν να δώσουν ιδιαίτερο νόημα στην οντότητα με την οποία χρησιμοποιείται. Για παράδειγμα, Όταν μια μεταβλητή δηλώνεται ως στατική, γίνεται μεταβλητή κλάσης στην οποία μπορείτε να έχετε πρόσβαση χωρίς αναφορά στο αντικείμενο.
Ομοίως, όταν μια μεταβλητή δηλώνεται ως τελική, γίνεται αμετάβλητη, δηλαδή σταθερά.
Ας παρουσιάσουμε μερικές από τις σημαντικότερες διαφορές μεταξύ στατικών και τελικών λέξεων-κλειδιών στην Java.
Στατικός | Τελικός |
---|---|
Ένα μέλος στατικών δεδομένων (ένθετη τάξη, μεταβλητή ή μέθοδος) είναι ένα μέλος δεδομένων που προηγείται από στατική λέξη-κλειδί και μπορεί να προσεγγιστεί χωρίς αντικείμενο. | Η τελική λέξη-κλειδί μπορεί να εφαρμοστεί σε μια μεταβλητή, μέθοδο, κλάση κ.λπ. και επιβάλλει περιορισμούς στις οντότητες. |
Δεν είναι υποχρεωτικό να αρχικοποιηθεί η στατική μεταβλητή με τιμή κατά τη δήλωση. | Απαιτείται η αρχική μεταβλητή να αρχικοποιηθεί σε μια τιμή κατά τη δήλωση |
Μπορείτε να κάνετε εκ νέου προετοιμασία των στατικών μεταβλητών. | Δεν είναι δυνατή η εκ νέου προετοιμασία των τελικών μεταβλητών. |
Οι στατικές μέθοδοι είναι αυτές που μπορούν να έχουν πρόσβαση μόνο στατικά μέλη. | Οι τελικές μέθοδοι είναι οι μέθοδοι που δεν μπορούν να κληρονομηθούν / παρακαμφθούν. |
Οι στατικές τάξεις είναι τάξεις των οποίων τα αντικείμενα δεν μπορούν να δημιουργηθούν. | Τα τελικά μαθήματα είναι τάξεις που δεν μπορούν να κληρονομηθούν. |
Συχνές Ερωτήσεις
Ε # 1) Μπορεί η τάξη Java να είναι στατική;
Απάντηση: Ναι, μια τάξη στην Java μπορεί να είναι στατική, υπό την προϋπόθεση ότι δεν είναι η εξωτερική τάξη. Αυτό σημαίνει ότι μόνο οι ένθετες τάξεις στην Java μπορούν να είναι στατικές.
Q # 2) Πότε πρέπει να χρησιμοποιώ το Static στην Java;
Απάντηση: Όποτε θέλετε ένα μέλος δεδομένων στο πρόγραμμά σας που θα πρέπει να διατηρεί την αξία του στα αντικείμενα, τότε θα πρέπει να χρησιμοποιείτε στατικό. Για παράδειγμα, ένας μετρητής. Μια μέθοδος μπορεί να δηλωθεί ως στατική όταν δεν θέλετε να την καλέσετε χρησιμοποιώντας ένα αντικείμενο.
Q # 3) Μπορεί μια Στατική Κατηγορία να έχει Κατασκευαστή;
Απάντηση: Ναι, μια στατική τάξη μπορεί να έχει κατασκευαστή και σκοπός της είναι αποκλειστικά η αρχικοποίηση μελών στατικών δεδομένων. Θα γίνει επίκληση μόνο για πρώτη φορά κατά την πρόσβαση στα μέλη των δεδομένων. Δεν θα γίνει επίκληση για μεταγενέστερη πρόσβαση.
Q # 4) Ποια είναι η χρήση του Στατικού Κατασκευαστή;
Απάντηση: Γενικά, ο κατασκευαστής χρησιμοποιείται για την αρχικοποίηση μελών στατικών δεδομένων. Χρησιμοποιείται επίσης για την εκτέλεση λειτουργιών / ενεργειών που πρέπει να πραγματοποιούνται μόνο μία φορά.
Ε # 5) Οι στατικές μέθοδοι κληρονομούνται στην Java;
Απάντηση: Ναι, οι στατικές μέθοδοι στην Java κληρονομούνται αλλά δεν παρακάμπτονται.
συμπέρασμα
Σε αυτό το σεμινάριο, συζητήσαμε λεπτομερώς τη στατική λέξη-κλειδί της Java μαζί με τη χρήση της σε μέλη δεδομένων, μεθόδους, μπλοκ και τάξεις. Η στατική λέξη-κλειδί είναι μια λέξη-κλειδί που χρησιμοποιείται για να δείξει το επίπεδο τάξης ή το καθολικό εύρος.
Δεν χρειάζεται να έχετε πρόσβαση στα στατικά μέλη χρησιμοποιώντας παρουσίες της τάξης. Μπορείτε να έχετε απευθείας πρόσβαση στα μέλη στατικών δεδομένων χρησιμοποιώντας το όνομα της τάξης. Συζητήσαμε επίσης τις σημαντικές διαφορές μεταξύ στατικών και μη στατικών μελών καθώς και στατικών και τελικών λέξεων-κλειδιών.
Στα επόμενα θέματα, θα διερευνήσουμε περισσότερες λέξεις-κλειδιά και τη σημασία τους στη γλώσσα Java.
Συνιστώμενη ανάγνωση
- Στατικό σε C ++
- Java Interface και Abstract Class Tutorial με παραδείγματα
- Ανάπτυξη Java: Δημιουργία και εκτέλεση αρχείου Java JAR
- Java Virtual Machine: Πώς βοηθά το JVM στην εκτέλεση της εφαρμογής Java
- C # Έννοιες: Κατασκευαστής, Καταστροφέας, Στατική Κατηγορία, Δομή & Enum
- Πρόσβαση τροποποιητών σε Java - Εκμάθηση με παραδείγματα
- Εκμάθηση Java Reflection με παραδείγματα
- Εισαγωγή στη γλώσσα προγραμματισμού Java - Video Tutorial