Διαφορές μεταξύ αφηρημένης κλάσης και διεπαφής σε Java Διαφορά μεταξύ

Anonim

Abstract Class vs Interface στην Java

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

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

Διαφορετικά

Αρχικά, μια αφηρημένη κλάση επιτρέπει τα πεδία που δεν είναι στατικά ή τελικά σε αντίθεση με τα στατικά και τελικά πεδία που χρησιμοποιούνται στις διεπαφές. Οι διεπαφές δεν μπορούν να έχουν κανέναν κώδικα εφαρμογής που να τους χρησιμοποιείται και μπορεί να υπάρχει κώδικας εφαρμογής που χρησιμοποιείται στην αφηρημένη κλάση. Οι κώδικες εφαρμογής που αναπτύσσονται στην αφηρημένη κλάση μπορούν να έχουν μερικές ή όλες τις εφαρμοζόμενες μεθόδους. Από προεπιλογή, όλες οι μέθοδοι της διασύνδεσης είναι "αφηρημένες. "

Είναι επίσης δυνατή η ορατότητα για μεθόδους ή μέλη μιας αφηρημένης κλάσης που μπορεί να ποικίλει όπως δημόσια, προστατευμένη, ιδιωτική ή καμία. Η ορατότητα της διασύνδεσης, από την άλλη πλευρά, μπορεί να ρυθμιστεί μόνο σε έναν τρόπο ορατότητας ο οποίος είναι "δημόσιος. '"

Μια αφηρημένη κλάση θα κληρονομήσει αυτόματα την τάξη αντικειμένων. Αυτό, στην πραγματικότητα, σημαίνει ότι συμπεριλαμβάνονται μέθοδοι όπως ο κλώνος () και ο ίσος (). Σε μια διεπαφή, δεν είναι δυνατή η κληρονομικότητα της τάξης του αντικειμένου. Μετά από αυτό, η αφηρημένη κλάση έχει τη δυνατότητα να έχει έναν κατασκευαστή, αλλά μια διεπαφή δεν μπορεί να έχει μία.

Η διεπαφή στην Java έχει επίσης μια πολύ σημαντική λειτουργία με την εφαρμογή πολλαπλών κληρονομιών, αφού μια τάξη μπορεί να έχει μόνο μία σούπερ τάξη. Παρόλο που μπορεί να υπάρχει μόνο μία κατηγορία σούπερ, μπορεί να εφαρμοστεί σε οποιονδήποτε αριθμό διεπαφών. Δεν είναι δυνατό να έχουμε πολλαπλές κληρονομιές σε μια αφηρημένη τάξη.

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

Η προσθήκη μιας μεθόδου σε μια διεπαφή απαιτεί να εντοπίζετε όλες τις κλάσεις εφαρμογής που εφαρμόζουν τη συγκεκριμένη διεπαφή. Εναλλακτικά, μπορείτε να επεκτείνετε τη διεπαφή έτσι ώστε να έχετε τη δυνατότητα να έχετε επιπλέον μεθόδους. Εάν τυχαίνει να ασχολείστε με μια αφηρημένη κλάση, το μόνο που απαιτείται είναι να προσθέσετε την προεπιλεγμένη εφαρμογή της μεθόδου και ο κώδικας συνεχίζει να λειτουργεί. Εφόσον υπάρχουν διαφορές μεταξύ των αφηρημένων τάξεων και των διεπαφών, είναι σημαντικό να σημειωθεί ότι δεν είναι αντίπαλοι, αλλά οι διαφορές που αναφέρονται στο παρόν χρησιμεύουν για να αλληλοσυμπληρώνονται.

Περίληψη

Τα πεδία αφηρημένης κλάσης δεν είναι στατικά ή τελικά σε αντίθεση με τη διεπαφή που έχει στατικούς και τελικούς πίνακες.

  1. Δεν είναι δυνατή η χρήση κώδικα εφαρμογής σε διεπαφές, ενώ μπορεί να χρησιμοποιηθεί σε αφηρημένη κλάση.

  2. Η ορατότητα των διασυνδέσεων μπορεί να είναι δημόσια μόνο όταν η αφηρημένη ορατότητα στην τάξη μπορεί να ποικίλει.

  3. Μια αφηρημένη κλάση θα κληρονομήσει αυτόματα την κλάση αντικειμένου, αλλά δεν είναι δυνατή στη διεπαφή.

  4. Η αφηρημένη κλάση είναι ταχύτερη από τη διεπαφή στην υλοποίηση.