java interface abstract class tutorial with examples
Αυτό το σεμινάριο βίντεο εξηγεί τι είναι το Java Interface, πώς να το εφαρμόσετε και πολλαπλές κληρονομικές εφαρμογές χρησιμοποιώντας Interfaces in Java με παραδείγματα:
Σε ένα από τα προηγούμενα μαθήματά μας, συζητήσαμε λεπτομερώς την αφαίρεση. Εκεί συζητήσαμε αφηρημένες τάξεις και αφηρημένες μεθόδους. Γνωρίζουμε ότι οι αφηρημένες τάξεις παρέχουν αφαίρεση, καθώς μπορούμε επίσης να έχουμε κάποια μη αφηρημένη μέθοδο στην αφηρημένη τάξη.
Η δυνατότητα που παρέχει 100% αφαίρεση στην Java ονομάζεται ' Διεπαφή '. Σε αυτό το σεμινάριο, θα συζητήσουμε διεπαφές σε Java.
=> Ρίξτε μια ματιά στον οδηγό για αρχάριους Java εδώ.
Τι θα μάθετε:
- Εκπαιδευτικά βίντεο για διασυνδέσεις και αφηρημένες τάξεις
- Τι είναι μια διεπαφή στην Java
- Πολλαπλές διεπαφές στην Java
- συμπέρασμα
Εκπαιδευτικά βίντεο για διασυνδέσεις και αφηρημένες τάξεις
Εισαγωγή στις διεπαφές και τις αφηρημένες τάξεις στην Java - Μέρος 1:
Επισκόπηση διεπαφών και αφηρημένων τάξεων στην Java - Μέρος 2:
Αφαίρεση και κληρονομικότητα στην Ιάβα:
Τι είναι μια διεπαφή στην Java
Μια διεπαφή στην Java ορίζεται ως ένας αφηρημένος τύπος που καθορίζει τη συμπεριφορά της τάξης. Μια διεπαφή είναι ένα είδος πρωτοκόλλου που καθορίζει κανόνες σχετικά με τον τρόπο συμπεριφοράς μιας συγκεκριμένης κλάσης.
Μια διεπαφή στην Java μπορεί να περιέχει αφηρημένες μεθόδους και στατικές σταθερές. Από προεπιλογή, όλες οι μέθοδοι στη διεπαφή είναι δημόσιες και αφηρημένες.
Ένα απλό παράδειγμα μιας διεπαφής στην Java δίνεται παρακάτω.
interface shape{ public static final String color = “Red”; public void calculateArea(); }
Το παραπάνω παράδειγμα ορίζει μια διεπαφή «σχήμα» που έχει μια στατική μεταβλητή και μια αφηρημένη μέθοδο «calculArea ()».
Μια διεπαφή είναι μια οντότητα που έχει μόνο αφηρημένες μεθόδους ως το σώμα της. Μπορεί επίσης να έχει στατικές τελικές μεταβλητές.
Έτσι, όπως και η κλάση, μια διεπαφή μπορεί επίσης να έχει μεθόδους και μεταβλητές, αλλά σημειώστε ότι οι μέθοδοι είναι αφηρημένες (χωρίς εφαρμογή) και οι μεταβλητές είναι στατικές.
Παρακάτω αναφέρονται ορισμένες ιδιότητες που πρέπει να έχετε κατά νου σχετικά με τις διεπαφές:
- Οι διεπαφές είναι σχεδιαγράμματα για μια τάξη. Λένε στην τάξη τι να κάνουν με τις μεθόδους τους.
- Μια διεπαφή καθορίζει αφηρημένες μεθόδους και κλάσεις που εφαρμόζουν ότι η διεπαφή πρέπει επίσης να εφαρμόζει αυτές τις μεθόδους.
- Εάν μια κλάση που εφαρμόζει τη διεπαφή δεν καθορίζει όλες τις μεθόδους της διεπαφής, τότε αυτή η κλάση γίνεται μια αφηρημένη τάξη.
Η γενική σύνταξη της δήλωσης διεπαφής δίνεται παρακάτω.
interface { //constant or static fields declaration //abstract method declaration //default declarations }
Όπως φαίνεται στην παραπάνω δήλωση, χρησιμοποιούμε μια λέξη-κλειδί Java «interface» που δείχνει ότι δηλώνουμε μια διεπαφή τώρα.
η καλύτερη εφαρμογή λήψης μουσικής mp3
Μια λέξη-κλειδί «διασύνδεσης» ακολουθείται από το όνομα_επιφάνειας και μετά τα αγκύλια. Έπειτα έχουμε διάφορες δηλώσεις αφηρημένων μεθόδων, δήλωση στατικών πεδίων κ.λπ. Τέλος, κλείνουμε τα σγουρά τιράντες.
Για παράδειγμα,αν θέλουμε να δηλώσουμε μια διεπαφή «TestInterface» με δύο μεθόδους σε αυτήν, δηλαδή method_one και method_two, τότε η δήλωση TestInterface θα έχει ως εξής:
interface TestInterface{ void method_one(); void method_two(); }
Χρήσεις της διεπαφής στην Java
- Οι διεπαφές στην Java παρέχουν 100% αφαίρεση, καθώς μπορούν να έχουν μόνο αφηρημένες μεθόδους.
- Χρησιμοποιώντας διεπαφές, μπορούμε να επιτύχουμε πολλαπλές κληρονομιές στην Java, οι οποίες δεν είναι δυνατές χρησιμοποιώντας τάξεις.
- Για να επιτευχθεί χαλαρή σύζευξη, μπορεί να χρησιμοποιηθεί μια διεπαφή.
Πώς να εφαρμόσετε μια διεπαφή στην Java
Μόλις δηλωθεί η διεπαφή, μπορούμε να τη χρησιμοποιήσουμε σε μια τάξη χρησιμοποιώντας τη λέξη-κλειδί 'υλοποιεί' στη δήλωση τάξης.
Αυτή η λέξη-κλειδί «υλοποιεί» εμφανίζεται μετά το όνομα της τάξης όπως φαίνεται παρακάτω:
class implements { //class body }
Η εφαρμογή μιας διεπαφής είναι ίδια με την υπογραφή μιας σύμβασης. Ως εκ τούτου, μια τάξη που εφαρμόζει μια διεπαφή σημαίνει ότι έχει υπογράψει ένα συμβόλαιο και έχει συμφωνήσει να εφαρμόσει τις αφηρημένες μεθόδους της διεπαφής ή με άλλα λόγια εκτελεί τη συμπεριφορά που καθορίζεται από τη διεπαφή.
Εάν η κλάση που εφαρμόζει τη διεπαφή δεν εφαρμόζει την ακριβή συμπεριφορά που καθορίζεται στη διεπαφή, τότε η κλάση πρέπει να δηλωθεί ως αφηρημένη.
Παράδειγμα εφαρμογής διεπαφής
Δίνεται παρακάτω είναι ένα απλό παράδειγμα μιας διεπαφής στην Java.
//interface declaration interface Polygon_Shape { void calculateArea(int length, int breadth); } //implement the interface class Rectangle implements Polygon_Shape { //implement the interface method public void calculateArea(int length, int breadth) { System.out.println('The area of the rectangle is ' + (length * breadth)); } } class Main { public static void main(String() args) { Rectangle rect = new Rectangle(); //declare a class object rect.calculateArea(10, 20); //call the method } }
Παραγωγή:
Το παραπάνω πρόγραμμα δείχνει το απλό παράδειγμα διεπαφών στην Java. Εδώ, δηλώνουμε μια διεπαφή με το όνομα Polygon_Shape και στη συνέχεια η κλάση Rectangle το εφαρμόζει.
Σύμβαση ονομάτων διεπαφών στην Ιάβα
Οι συμβάσεις ονοματοδοσίας Java είναι οι οδηγίες ονομασίας που πρέπει να ακολουθήσουμε ως προγραμματιστές, ώστε να μπορούμε να παράγουμε αναγνώσιμο και συνεπή κώδικα. Η Java χρησιμοποιεί σημειώσεις 'TitleCase' για τις κατηγορίες ονομάτων και τις διεπαφές. Χρησιμοποιεί σημειώσεις 'CamelCase' για μεταβλητές, μεθόδους κ.λπ.
Όσον αφορά τη διασύνδεση, το όνομα της διεπαφής βρίσκεται στην κεφαλίδα του κεφαλαίου με το πρώτο γράμμα κάθε λέξης του ονόματος της διεπαφής με κεφαλαία γράμματα. Τα ονόματα διεπαφών επιλέγονται έτσι ώστε να είναι συνήθως επίθετα. Αλλά όταν οι διεπαφές αντιπροσωπεύουν την οικογένεια των τάξεων όπως ο χάρτης ή η λίστα, τότε μπορούν να ονομαστούν με ουσιαστικά.
Μερικά παραδείγματα έγκυρων ονομάτων διεπαφής δίδονται παρακάτω:
public interface Iterable {} public interface List {} public interface Serializable {} public interface Clonable {} public interface Runnable {}
Κατασκευαστής διασύνδεσης
Το επόμενο ερώτημα είναι εάν μια διεπαφή έχει κατασκευαστή;
Γνωρίζουμε ότι χρειαζόμαστε αντικείμενα για να επικαλεστούμε μεθόδους. Για να δημιουργήσουμε αντικείμενα χρειαζόμαστε κατασκευαστές. Αλλά στην περίπτωση των Interfaces στην Java, οι μέθοδοι δεν εφαρμόζονται.
Οι μέθοδοι διεπαφών είναι όλες αφηρημένες. Ως εκ τούτου, δεν υπάρχει καμία χρήση στην κλήση αυτών των μεθόδων από τη διεπαφή. Δεύτερον, καθώς οι διεπαφές είναι από προεπιλογή αφηρημένες, δεν μπορούμε να δημιουργήσουμε αντικείμενα της διεπαφής. Έτσι δεν χρειαζόμαστε κατασκευαστές για διασύνδεση.
Μέθοδοι διασύνδεσης
Σε αυτήν την ενότητα, θα συζητήσουμε τον τρόπο δήλωσης μεθόδων διεπαφής. Κατά κανόνα, μια διεπαφή μπορεί να έχει μόνο δημόσιες μεθόδους ή από προεπιλογή, οι μέθοδοι διεπαφής είναι δημόσιες. Κανένας άλλος τροποποιητής πρόσβασης δεν επιτρέπεται να χρησιμοποιείται μέσα στη διεπαφή.
Έτσι, είτε το δηλώνουμε ρητά είτε όχι, κάθε μέθοδος στη διεπαφή είναι από προεπιλογή αφηρημένη με δημόσια προβολή.
Επομένως, εάν το void printMethod () είναι το πρωτότυπο που σκοπεύουμε να δηλώσουμε σε μια διεπαφή, τότε οι ακόλουθες δηλώσεις είναι οι ίδιες.
void printMethod(); public void printMethod(); abstract void printMethod (); public abstract void printMethod ();
Σημειώστε ότι δεν μπορούμε να χρησιμοποιήσουμε τους ακόλουθους τροποποιητές μέσα στη διεπαφή για τις μεθόδους διεπαφής.
- τελικός
- στατικός
- Ιδιωτικός
- προστατευμένο
- συγχρονισμένος
- ντόπιος
- αυστηρά
Τώρα ας εφαρμόσουμε ένα πρόγραμμα Java για να δείξουμε την ορατότητα της μεθόδου διεπαφής.
//declare an interface interface TestInterface { void printMethod(); //default visibility is public. } //interface implementation class TestClass implements TestInterface { //if the access modifier is changed to any other, compiler generates error public void printMethod() { System.out.println('TestClass::printMethod()'); } } class Main { public static void main(String() args) { TestClass tc = new TestClass(); //create an object tc.printMethod(); //call concrete method } }
Παραγωγή:
Όπως ήδη αναφέρθηκε, από προεπιλογή, οι μέθοδοι διεπαφής είναι δημόσιες. Επομένως, όταν δεν καθορίζουμε τροποποιητή πρόσβασης για τη μέθοδο διασύνδεσης, τότε είναι δημόσιο όπως στο παραπάνω πρόγραμμα.
Ας υποθέσουμε ότι αλλάζουμε τη δήλωση μεθόδου διεπαφής στο παραπάνω πρόγραμμα ως εξής:
ιδιωτικό κενό εκτύπωσης Μέθοδος ();
Τότε αυτό σημαίνει ότι ορίσαμε τη μέθοδο διεπαφής printMethod () ως ιδιωτική. Όταν καταρτίζουμε το πρόγραμμα, λαμβάνουμε το ακόλουθο σφάλμα μεταγλωττιστή.
σφάλμα: ο ιδιωτικός τροποποιητής δεν επιτρέπεται εδώ
ιδιωτικό κενό εκτύπωσης Μέθοδος ();
Η δεύτερη περίπτωση που μπορούμε να δοκιμάσουμε είναι αλλάζοντας τον τροποποιητή της εφαρμοζόμενης μεθόδου στην κλάση TestClass από δημόσιο σε ιδιωτικό. Τώρα ο προεπιλεγμένος τροποποιητής στην τάξη είναι ιδιωτικός. Αφαιρούμε λοιπόν τη δημόσια λέξη-κλειδί από το πρωτότυπο μεθόδου στην τάξη ως εξής:
void printMethod() { System.out.println('TestClass::printMethod()'); }
Τώρα αν καταρτίσουμε το πρόγραμμα, τότε έχουμε το ακόλουθο σφάλμα.
σφάλμα: printMethod () στο TestClass δεν μπορεί να εφαρμόσει printMethod () στο TestInterface
άκυρη εκτύπωση Μέθοδος ()
^
προσπάθεια εκχώρησης ασθενέστερων δικαιωμάτων πρόσβασης · ήταν δημόσιο
Εξ ου και το σημείο που πρέπει να σημειωθεί εδώ είναι ότι δεν μπορούμε να αλλάξουμε τον τροποποιητή πρόσβασης της εφαρμοζόμενης μεθόδου της διεπαφής σε οποιονδήποτε άλλο τροποποιητή πρόσβασης. Δεδομένου ότι οι μέθοδοι διεπαφής είναι από προεπιλογή δημόσιες, όταν εφαρμόζονται από κλάσεις που εφαρμόζουν διεπαφές, αυτές οι μέθοδοι θα πρέπει επίσης να είναι δημόσιες.
Πεδία διασύνδεσης σε Java
Τα πεδία ή οι μεταβλητές που δηλώνονται σε μια διεπαφή είναι από προεπιλογή δημόσια, στατικά και τελικά. Αυτό σημαίνει ότι μόλις δηλωθεί η αξία τους δεν μπορεί να αλλάξει.
Σημειώστε ότι εάν τα πεδία διασύνδεσης ορίζονται χωρίς να καθορίσετε κανέναν από αυτούς τους τροποποιητές, τότε οι μεταγλωττιστές Java αναλαμβάνουν αυτούς τους τροποποιητές. Για παράδειγμα, εάν δεν καθορίσουμε έναν δημόσιο τροποποιητή όταν δηλώνουμε το πεδίο στη διεπαφή, τότε θεωρείται από προεπιλογή.
Όταν μια διεπαφή υλοποιείται από μια κλάση, τότε παρέχει μια εφαρμογή για όλες τις αφηρημένες μεθόδους της διεπαφής. Ομοίως, όλα τα πεδία που δηλώνονται στη διεπαφή κληρονομούνται επίσης από την κλάση που εφαρμόζει τη διεπαφή. Έτσι υπάρχει ένα αντίγραφο του πεδίου διασύνδεσης στην κλάση εφαρμογής.
Τώρα όλα τα πεδία στη διεπαφή είναι από προεπιλογή στατικά. Ως εκ τούτου μπορούμε να αποκτήσουμε πρόσβαση σε αυτά χρησιμοποιώντας το όνομα της διεπαφής απευθείας με το ίδιο όπως έχουμε πρόσβαση στα στατικά πεδία της κλάσης χρησιμοποιώντας το όνομα της κλάσης και όχι το αντικείμενο.
Το παρακάτω παράδειγμα προγράμματος Java δείχνει πώς μπορούμε να έχουμε πρόσβαση στα πεδία διασύνδεσης.
//interface declaration interface TestInterface{ public static int value = 100; //interface field public void display(); } //Interface implementation class TestClass implements TestInterface{ public static int value = 5000; //class fields public void display() { System.out.println('TestClass::display () method'); } public void show() { System.out.println('TestClass::show () method'); } } public class Main{ public static void main(String args()) { TestClass testObj = new TestClass(); //print interface and class field values. System.out.println('Value of the interface variable (value): '+TestInterface.value); System.out.println('Value of the class variable (value): '+testObj.value); } }
Παραγωγή:
Όπως φαίνεται στο παραπάνω πρόγραμμα, μπορείτε να έχετε πρόσβαση στα πεδία διασύνδεσης χρησιμοποιώντας ένα όνομα διασύνδεσης ακολουθούμενο από τον τελεστή κουκκίδων (.) Και στη συνέχεια την πραγματική μεταβλητή ή το όνομα πεδίου.
Η γενική διεπαφή στην Java
Έχουμε συζητήσει γενικά Java στα προηγούμενα σεμινάρια μας. Εκτός από τις γενικές τάξεις, τις μεθόδους κ.λπ., μπορούμε επίσης να έχουμε γενικές διεπαφές. Οι γενικές διεπαφές μπορούν να καθοριστούν με τον ίδιο τρόπο με τον οποίο καθορίζουμε γενικές τάξεις.
Οι γενικές διεπαφές δηλώνονται με παραμέτρους τύπου που τις καθιστούν ανεξάρτητες από έναν τύπο δεδομένων.
Η γενική σύνταξη της γενικής διεπαφής έχει ως εξής:
ερωτήσεις και απαντήσεις για συνέντευξη διακομιστή ms sql για έμπειρους
interface { //interface methods and variables }
Τώρα αν θέλουμε να χρησιμοποιήσουμε την παραπάνω γενική διεπαφή σε μια τάξη, τότε μπορούμε να έχουμε τον ορισμό της τάξης όπως φαίνεται παρακάτω:
class implements interface_name { //class body }
Σημειώστε ότι πρέπει να καθορίσουμε την ίδια παράμετρο με την κλάση με τη διεπαφή.
Το ακόλουθο πρόγραμμα Java δείχνει τις γενικές διεπαφές στην Java.
//generic interface declaration interface MinInterface>{ T minValue(); } //implementation for generic interface class MinClassImpl> implements MinInterface { T() intArray; MinClassImpl(T() o) { intArray = o; } public T minValue() { T v = intArray(0); for (int i = 1; i intMinValue = new MinClassImpl (intArray); MinClassImpl charMinValue = new MinClassImpl(charArray); //call interface method minValue for int type array System.out.println('Min value in intOfArray: ' + intMinValue.minValue()); //call interface method minValue for char type array System.out.println('Min value in charOfArray: ' + charMinValue.minValue()); }
Παραγωγή:
Το παραπάνω πρόγραμμα εφαρμόζει μια διεπαφή που περιέχει μια μέθοδο για την εύρεση της ελάχιστης τιμής στον πίνακα. Αυτή είναι μια γενική διεπαφή. Η τάξη εφαρμόζει αυτήν τη διεπαφή και παρακάμπτει τη μέθοδο. Στην κύρια μέθοδο, καλούμε τη μέθοδο διασύνδεσης για να βρούμε την ελάχιστη τιμή σε έναν ακέραιο και έναν πίνακα χαρακτήρων.
Πολλαπλές διεπαφές στην Java
Στο θέμα της κληρονομιάς μας, έχουμε δει ότι η Java δεν επιτρέπει σε μια τάξη να κληρονομήσει από πολλαπλές τάξεις καθώς οδηγεί σε μια ασάφεια που ονομάζεται 'Diamond Problem'.
Ωστόσο, μια τάξη μπορεί να κληρονομήσει ή να εφαρμόσει περισσότερες από μία διεπαφές. Σε αυτήν την περίπτωση, είναι γνωστό ως πολλαπλή κληρονομιά. Έτσι, παρόλο που δεν επιτρέπεται η εφαρμογή πολλαπλών κληρονομιών στην Java μέσω τάξεων, μπορούμε να το κάνουμε χρησιμοποιώντας διεπαφές.
Το παρακάτω διάγραμμα δείχνει πολλαπλή κληρονομιά χρησιμοποιώντας διεπαφές. Εδώ μια κλάση εφαρμόζει δύο διεπαφές, δηλαδή Interface_one και Interface_two.
Σημειώστε ότι όταν μια κλάση εφαρμόζει τις πολλαπλές διεπαφές, τα ονόματα διεπαφών διαχωρίζονται με κόμμα στη δήλωση κλάσης. Μπορούμε να εφαρμόσουμε όσες διεπαφές αρκεί να χειριστούμε την πολυπλοκότητα.
Το πρόγραμμα Java που δείχνει πολλαπλές διεπαφές φαίνεται παρακάτω.
//Interface_One declaration interface Interface_One{ void print(); } //Interface_Two declaration interface Interface_Two{ void show(); } //multiple inheritance - DemoClass implementing Interface_One&Interface_Two class DemoClass implements Interface_One,Interface_Two{ public void print(){ //Override Interface_One print() System.out.println('Democlass::Interface_One_Print ()'); } public void show(){ //Override Interface_Two show() System.out.println('DemoClass::Interface_Two_Show ()'); } } public class Main{ public static void main(String args()){ DemoClass obj = new DemoClass(); //create DemoClass object and call methods obj.print(); obj.show(); } }
Παραγωγή:
το καλύτερο λογισμικό παρακολούθησης email για το gmail
Όπως φαίνεται παραπάνω, εφαρμόζουμε δύο διεπαφές. Στη συνέχεια, παρακάμπτουμε τις αντίστοιχες μεθόδους τους και τις ονομάζουμε στην κύρια μέθοδο.
Η πολλαπλή κληρονομιά στην Java παρέχει όλα τα οφέλη που παρέχει η πολλαπλή κληρονομιά στο C ++. Αλλά σε αντίθεση με πολλαπλές κληρονομικές που χρησιμοποιούν τάξεις, η πολλαπλή κληρονομιά που χρησιμοποιεί διεπαφές δεν έχει καμία αμφιβολία.
Κληρονομικότητα διεπαφής σε Java: Η διεπαφή επεκτείνει τη διεπαφή
Όταν μια τάξη εφαρμόζει μια διεπαφή, γίνεται χρησιμοποιώντας το « υλοποιεί Λέξη-κλειδί. Στην Java, μια διεπαφή μπορεί να κληρονομήσει μια άλλη διεπαφή. Αυτό γίνεται χρησιμοποιώντας το « εκτείνεται Λέξη-κλειδί. Όταν μια διεπαφή επεκτείνει μια άλλη διεπαφή ονομάζεται « Κληρονομιά διεπαφής Στην Ιάβα.
Το πρόγραμμα Java για την εφαρμογή κληρονομιάς διεπαφής εμφανίζεται παρακάτω.
//Interface_One declaration interface Interface_One{ void print(); } //Interface_Two declaration; inherits from Interface_One interface Interface_Two extends Interface_One{ void show(); } //multiple inheritance - DemoClass implementing Interface_Two class DemoClass implements Interface_Two{ public void print(){ //Override Interface_Two print() System.out.println('Democlass public class Main{ public static void main(String args()){ DemoClass obj = new DemoClass(); //create DemoClass object and call methods obj.print(); obj.show(); } }
Παραγωγή:
Έχουμε τροποποιήσει το ίδιο πρόγραμμα που χρησιμοποιήσαμε για πολλαπλή κληρονομιά χρησιμοποιώντας διεπαφές για να δείξουμε την κληρονομική διεπαφή. Εδώ, επεκτείνουμε το Interface_one στο Interface_two και μετά προχωράμε στην εφαρμογή του Interface_two σε μια τάξη. Καθώς οι διεπαφές κληρονομούνται, και οι δύο μέθοδοι είναι διαθέσιμες για παράκαμψη.
Συχνές Ερωτήσεις
Q # 1) Ποια είναι η χρήση της διεπαφής στην Java;
Απάντηση: Μια διεπαφή στην Java είναι μια οντότητα που χρησιμοποιείται για την επίτευξη αφαίρεσης 100%. Μπορεί να περιέχει μόνο αφηρημένες μεθόδους που μπορούν να παρακαμφθούν από την τάξη που εφαρμόζει τη διεπαφή.
Η διεπαφή με κάποιο τρόπο λειτουργεί σαν ένα σχεδιάγραμμα της κλάσης όπου παρέχει στην τάξη τα πρωτότυπα αφηρημένης μεθόδου και στατικές σταθερές και στη συνέχεια η κλάση πρέπει να παρακάμψει αυτές τις μεθόδους εφαρμόζοντας τη διεπαφή.
Q # 2) Ποια είναι τα πλεονεκτήματα της διασύνδεσης στην Java;
Απάντηση: Μερικά από τα πλεονεκτήματα της διασύνδεσης είναι τα εξής:
- Η διεπαφή λειτουργεί ως σχεδιάγραμμα της τάξης.
- Η διεπαφή παρέχει 100% αφαίρεση στην Java, καθώς έχει όλες τις αφηρημένες μεθόδους.
- Οι διεπαφές μπορούν να χρησιμοποιηθούν για την επίτευξη πολλαπλών κληρονομιών στην Java. Η Java δεν επιτρέπει να κληρονομήσει από περισσότερες από μία κλάσεις, αλλά μια κλάση μπορεί να εφαρμόσει πολλαπλές διεπαφές.
# 3) Μπορεί μια διεπαφή να έχει μεθόδους;
Απάντηση: Οι διεπαφές μπορούν να έχουν πρωτότυπα μεθόδων και στατικές και τελικές σταθερές. Αλλά ξεκινώντας από το Java 8, οι διεπαφές μπορούν να περιέχουν στατικές και προεπιλεγμένες μεθόδους.
Q # 4) Μπορούμε να δηλώσουμε τη διεπαφή ως τελική;
Απάντηση: Όχι. Εάν δηλώσουμε μια διεπαφή ως τελική, τότε η τάξη δεν θα είναι σε θέση να την εφαρμόσει. Χωρίς εφαρμογή από οποιαδήποτε κατηγορία, η διεπαφή δεν θα εξυπηρετεί κανένα σκοπό.
Περισσότερα για τις διεπαφές
Οι διεπαφές είναι σχεδιαγράμματα όπως η κλάση, αλλά θα έχει μόνο τη δήλωση μεθόδου. Δεν θα έχει καμία μέθοδο εφαρμογής. Όλες οι μέθοδοι στη διεπαφή είναι από προεπιλογή δημόσια περίληψη. Η διεπαφή Java 1.8 μπορεί να έχει στατικές και προεπιλεγμένες μεθόδους.
Οι διεπαφές χρησιμοποιούνται κυρίως σε API.
Για παράδειγμα: Σκεφτείτε ότι σχεδιάζετε τον κινητήρα ενός οχήματος.
Όταν τελειώσετε με το τμήμα υλικού, θέλετε ορισμένες από τις λειτουργίες λογισμικού να εφαρμοστούν από έναν πελάτη που χρησιμοποιεί τη μηχανή σας. Έτσι, σε αυτήν την περίπτωση, μπορείτε να ορίσετε τις λειτουργίες του κινητήρα σας σε μια διεπαφή.
Interface Engine { void changeGear(int a); void speedUp(int a); }
Κανόνες που πρέπει να ακολουθούνται για διασύνδεση
- Η κλάση που εφαρμόζει τη διεπαφή πρέπει να εφαρμόζει όλες τις μεθόδους στη διεπαφή.
- Μια διεπαφή μπορεί να περιέχει τελικές μεταβλητές.
public class Vehicle implements Engine { int speed; int gear; @Override public void speedUp(int a) { this.speed=a; System.out.println('speed'+speed); } @Override public void changeGear(int a) { this.gear=a; System.out.println('gear'+gear); } public static void main(String() args) { // TODO Auto-generated method stub Vehicle objv=new Vehicle(); objv.changeGear(3); objv.speedUp(70); } }
Εδώ η κατηγορία Vehicle είναι η υποκατηγορία που εφαρμόζει τη διεπαφή του κινητήρα.
Τι είναι οι αφηρημένες τάξεις;
Μια αφηρημένη τάξη είναι σαν μια τάξη αλλά θα έχει αφηρημένες μεθόδους και συγκεκριμένες μεθόδους. Οι αφηρημένες μέθοδοι δεν έχουν εφαρμογή. Θα έχει μόνο τη δήλωση μεθόδου.
Κανόνες που πρέπει να ακολουθούνται για το Abstract Class
- Η αφηρημένη τάξη δεν μπορεί να τεκμηριωθεί.
- Η παιδική τάξη που επεκτείνει την αφηρημένη τάξη θα πρέπει να εφαρμόζει όλες τις αφηρημένες μεθόδους της γονικής τάξης ή η παιδική τάξη πρέπει να δηλώνεται ως αφηρημένη τάξη.
Όταν θέλετε να σχεδιάσετε μερική υλοποίηση, μπορείτε να πάτε για μια αφηρημένη τάξη.
Παράδειγμα αφηρημένου προγράμματος τάξης:
EmployeeDetails.java
public abstract class EmployeeDetails { private String name; private int emp_ID; public void commonEmpDetaills() { System.out.println('Name'+name); System.out.println('emp_ID'+emp_ID); } public abstract void confidentialDetails(int s,String p); }
Η τάξη που πρόκειται να επεκτείνει την αφηρημένη τάξη.
HR.java
public class HR extends EmployeeDetails { private int salary; private String performance; @Override public void confidentialDetails(int s,String p) { this.salary=s; this.performance=p; System.out.println('salary=='+salary); System.out.println('performance=='+performance); } public static void main(String() args) { HR hr =new HR(); hr.confidentialDetails(5000,'good'); } }
Βασικά σημεία που πρέπει να σημειωθούν:
- Στις διεπαφές, όλες οι μέθοδοι δεν θα έχουν εφαρμογή μεθόδου.
- Η κλάση που εφαρμόζει τη διεπαφή θα πρέπει να εφαρμόσει όλες τις μεθόδους στη συγκεκριμένη διεπαφή.
- Οι αφηρημένες τάξεις μπορούν να έχουν αφηρημένες μεθόδους καθώς και κανονικές συγκεκριμένες μεθόδους. Οι αφηρημένες μέθοδοι δεν έχουν εφαρμογή.
- Η τάξη που επεκτείνει την αφηρημένη τάξη θα πρέπει να έχει την εφαρμογή για όλες τις αφηρημένες μεθόδους στην αφηρημένη τάξη.
- Εάν η υποκατηγορία δεν έχει αρκετές πληροφορίες για να εφαρμόσει τις αφηρημένες μεθόδους, τότε η υποκατηγορία θα πρέπει να δηλωθεί ως αφηρημένη τάξη.
συμπέρασμα
Σε αυτό το σεμινάριο, παρουσιάσαμε τις βασικές έννοιες των διεπαφών στην Java. Έχουμε συζητήσει τον ορισμό της διεπαφής, μαζί με την ανάγκη για διεπαφές. Εξερευνήσαμε τη βασική σύνταξη και τον ορισμό τους. Στη συνέχεια συζητήσαμε πώς να χρησιμοποιούμε διεπαφές για τις οποίες χρησιμοποιούμε τη λέξη-κλειδί «υλοποιεί».
Μάθαμε πώς να χρησιμοποιούμε πολλαπλές διεπαφές και κληρονομιά διεπαφών στην Java. Χρησιμοποιώντας πολλαπλές διεπαφές μπορούμε να εφαρμόσουμε πολλαπλή κληρονομιά στην Java. Η κληρονομιά διεπαφής είναι όταν μια διεπαφή επεκτείνει μια άλλη διεπαφή.
=> Επισκεφθείτε εδώ για να δείτε τη σειρά εκπαίδευσης Java για όλους
Συνιστώμενη ανάγνωση
- OOP Java: Εισαγωγή στον αντικειμενοστρεφή προγραμματισμό στην Java
- Συγκρίσιμες και συγκριτικές διεπαφές στην Java
- Βελτιώσεις διεπαφής σε Java 8 - Λειτουργική διασύνδεση Java
- Εκπαιδευτικό πρόγραμμα διασύνδεσης χαρτών Java με εφαρμογή & παραδείγματα
- Διασύνδεση ListIterator σε Java με παραδείγματα
- Διασύνδεση μαρκαδόρου σε Java: Σειριακό και κλωνοποιήσιμο
- Ορισμός διεπαφής σε Java: Java Set Tutorial με παραδείγματα
- Εκμάθηση Java Reflection με παραδείγματα