Διαφορά μεταξύ Abstract Class και Interface στην Java

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

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



Διαφορά μεταξύ Abstract Class και Interface στην Java



Τι είναι μια αφηρημένη τάξη στην Java;

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

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



Τι είναι μια διεπαφή;

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

Διαφορά μεταξύ Abstract Class και Interface στην Java

  1. «Πολλαπλή κληρονομικότητα» της αφηρημένης κλάσης και της διεπαφής στην Java- Παρά το γεγονός ότι τόσο η αφηρημένη τάξη όσο και η διεπαφή χρησιμοποιούνται κυρίως για αφαίρεση, είναι εντελώς διαφορετικά το ένα από το άλλο. Ενώ μια αφηρημένη τάξη είναι μια τάξη, μια διεπαφή είναι μια διεπαφή. Αυτό σημαίνει ότι ενώ μια διεπαφή μπορεί να επεκτείνει μόνο μια άλλη διεπαφή Java, μια αφηρημένη κλάση μπορεί να εφαρμόσει πολλαπλές κληρονομιές στην Java. Λοιπόν, η Java δεν υποστηρίζει πολλαπλές κληρονομιές, αλλά μπορεί κανείς να εφαρμόσει πολλαπλές κληρονομίες στην Java.
  2. 'Τύπος μεθόδου' της αφηρημένης κλάσης και διεπαφής στην Java- Η δεύτερη σημαντική διαφορά μεταξύ των δύο είναι ότι ενώ μια διεπαφή μπορεί να έχει μόνο αφηρημένες μεθόδους, μια αφηρημένη τάξη μπορεί να έχει τόσο αφηρημένες όσο και μη αφηρημένες μεθόδους. Ωστόσο, από το Java 8, μια διεπαφή μπορεί να έχει προεπιλεγμένες και στατικές μεθόδους.
  3. «Πρόσβαση τροποποιητές» της αφηρημένης κλάσης και διεπαφής στην Java- Μια αφηρημένη τάξη μπορεί να έχει δημόσιους, ιδιωτικούς και προστατευμένους τροποποιητές πρόσβασης, ωστόσο οι μέθοδοι μιας διεπαφής είναι σιωπηρά δημόσιες και αφηρημένες. Δεν μπορείτε να χρησιμοποιήσετε άλλο τροποποιητή πρόσβασης με μεθόδους διεπαφής ».
  4. «Εφαρμογή» του Abstract Class και Interface στην Java- Μια αφηρημένη κλάση μπορεί να παρέχει την εφαρμογή μιας διεπαφής. Μια διεπαφή, από την άλλη πλευρά, δεν μπορεί να παρέχει την εφαρμογή μιας αφηρημένης κλάσης.
  5. «Λέξη-κλειδί» αφηρημένης κλάσης και διεπαφής στην Java- Ενώ η 'αφηρημένη' λέξη-κλειδί χρησιμοποιείται για να δηλώσει μια αφηρημένη μέθοδο κλάσης ως αφηρημένη, ωστόσο, οι διεπαφές είναι εντελώς διαφορετική ιστορία. μπορούν να έχουν μόνο δημόσιες, στατικές τελικές σταθερές και δηλώσεις μεθόδου.
  6. «Χρήση» Abstract Class και Interface στην Java- Ενώ μια διεπαφή είναι ιδανική για δήλωση τύπου, μια αφηρημένη κλάση είναι πιο κατάλληλη για επαναχρησιμοποίηση κώδικα και προοπτική εξέλιξης. Μια διεπαφή μοιάζει με τάξη, αλλά δεν είναι τάξη.
  7. «Αξιοπιστία» αφηρημένης κλάσης και διεπαφής στην Java- Μια άλλη σημαντική διαφορά μεταξύ μιας αφηρημένης κλάσης και μιας διεπαφής είναι ότι η πρώτη είναι λίγο πιο γρήγορη από την τελευταία, επειδή μια αναζήτηση συνήθως εμπλέκεται σε μια διεπαφή πριν καλείται οποιαδήποτε παράκαμψη μεθόδου στην Java.
  8. «Τελικές μεταβλητές» της αφηρημένης κλάσης και της διεπαφής στην Java- Οι μεταβλητές που δηλώνονται σε μια διεπαφή είναι οριστικές από προεπιλογή, ενώ μια αφηρημένη κλάση μπορεί ή όχι να περιέχει μη τελικές μεταβλητές.

Abstract Class vs Interface in Java: Πίνακας σύγκρισης

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

Συνοπτικά σημεία για το Abstract Class και Interface στην Java

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

Δημοφιλείς Αναρτήσεις

Χάρη στο Twitter, το 'Naked Gunner' συνεχίζει να θυμάται 76 χρόνια μετά

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



Joe Quattrone, Barber to Capitol Hill - Συνέντευξη

Συνέντευξη με τον Joe Quattrone - «Joe Q» - ο οποίος βοήθησε τους πολύ ισχυρούς στην Ουάσινγκτον, για να φανεί ο καλύτερος τους για σχεδόν 40 χρόνια.

Η διαφορά μεταξύ ρητορικής και διαλεκτικής

Από αμνημονεύτων χρόνων, οι φιλόσοφοι χρησιμοποίησαν το λόγο ή τον λόγο ως μέσο συλλογισμού ή για να παρουσιάσουν μια άποψη σε ένα ακαδημαϊκό περιβάλλον. Πτώση

Κριτική βιβλίου: Το μονοπάτι του Όρεγκον

Ο Rinker Buck συνδέει την ιστορία της δοκιμής του Όρεγκον που ενημερώθηκε από τη δική του διαδρομή στο βαγόνι του 2011 κατά τη διάρκεια της διαδρομής με τον αδερφό Nick

Διαφορά μεταξύ ιικού και βακτηριακού ροζ ματιού

Viral vs Bacterial Pink Eye Τα μάτια μας λέγονται ότι είναι τα παράθυρα της ψυχής μας. Ανοίγουν το δρόμο για να δουν τον όμορφο κόσμο που έκανε ο Θεός. Χωρίς τα μάτια μας, εμείς

ONLINE ΑΠΟΚΛΕΙΣΤΙΚΟ: Η αποικιακή Νέα Αγγλία πήρε βρώμικο πλούσιο από το Slave Trade

Για ενάμισι αιώνα, οι πλούσιοι βόρειοι έχτισαν τις περιουσίες τους από τη ζάχαρη, το ρούμι και την ανθρώπινη δυστυχία