Βασική διαφορά – Κληρονομικότητα έναντι διεπαφής στην Java
Η Java είναι μια γλώσσα προγραμματισμού που αναπτύχθηκε από τη Sun Microsystems. Η Java μπορεί να χρησιμοποιηθεί για την ανάπτυξη διαφόρων εφαρμογών. Είναι μια γλώσσα πολλαπλών παραδειγμάτων που υποστηρίζει αντικειμενοστραφή, δομημένο κ.λπ. Το κύριο πλεονέκτημα της Java είναι ότι υποστηρίζει αντικειμενοστραφή προγραμματισμό (OOP). Ο προγραμματιστής μπορεί να δημιουργήσει κλάσεις και αντικείμενα. Υπάρχουν τέσσερις πυλώνες στο OOP. Είναι η κληρονομικότητα, ο πολυμορφισμός, η αφαίρεση και η ενθυλάκωση. Η κληρονομικότητα και οι διεπαφές σχετίζονται με το OOP. Η βασική διαφορά μεταξύ της κληρονομικότητας και της διεπαφής είναι ότι η κληρονομικότητα είναι η εξαγωγή νέων κλάσεων από υπάρχουσες κλάσεις και η διεπαφή είναι η υλοποίηση αφηρημένων κλάσεων και πολλαπλής κληρονομικότητας.
Τι είναι η κληρονομικότητα στην Java;
Η κληρονομικότητα μπορεί να επιτύχει επαναχρησιμοποίηση κώδικα. Η κληρονομικότητα βοηθά στην επαναχρησιμοποίηση των χαρακτηριστικών και των μεθόδων μιας υπάρχουσας κλάσης. Ο μηχανισμός παραγωγής νέας κλάσης χρησιμοποιώντας παλιά κλάση ονομάζεται κληρονομικότητα. Η παλιά τάξη είναι γνωστή ως γονική τάξη ή σούπερ τάξη. Η παραγόμενη κλάση ονομάζεται θυγατρική τάξη ή υποκλάση.
Η σύνταξη της κληρονομικότητας Java είναι η εξής.
class subclass_name extends superclass_name {
δήλωση μεταβλητής;
δήλωση μεθόδου;
}
Η έννοια της κληρονομικότητας μπορεί να εξηγηθεί χρησιμοποιώντας το ακόλουθο παράδειγμα. Ας υποθέσουμε ότι υπάρχει μια κλάση που ονομάζεται Α ως εξής.
δημόσια τάξη Α{
public void sum(){
System.out.println("Sum");
}
}
Αν θέλουμε να προσθέσουμε μια νέα μέθοδο χωρίς να αλλάξουμε την υπάρχουσα κλάση, μπορούμε να το κάνουμε ως εξής.
δημόσια τάξη Β{
public void sub(){
System.out.println("Sub");
}
}
Ο προγραμματιστής μπορεί να χρησιμοποιήσει κληρονομικότητα για να χρησιμοποιήσει την κλάση Α sum().
δημόσια τάξη Β επεκτείνει την τάξη Α{
public void sub(){
System.out.println("Sub");
}
}
Στην κύρια συνάρτηση, είναι δυνατό να δημιουργηθεί ένα αντικείμενο του B και να καλέσετε το sub(), το οποίο ανήκει στην κλάση B και στο sum(), το οποίο ανήκει στην κλάση A χρησιμοποιώντας κληρονομικότητα.
public static void main(String args){
B obj=νέο B();
obj.sub();
obj.sum();
}
Υπάρχουν διαφορετικοί τύποι κληρονομικότητας. Είναι η απλή κληρονομικότητα, η πολλαπλή κληρονομικότητα, η κληρονομικότητα πολλαπλών επιπέδων και η ιεραρχική κληρονομικότητα. Στην απλή κληρονομικότητα, υπάρχει μία κλάση βάσης και μία παραγόμενη κλάση. Στην κληρονομικότητα πολλαπλών επιπέδων, υπάρχουν τρεις κλάσεις και συγκεκριμένα, η βασική, η ενδιάμεση κλάση και η παραγόμενη κλάση. Η ενδιάμεση κλάση κληρονομεί από τη βασική κλάση και η παράγωγη κλάση κληρονομεί από την ενδιάμεση κλάση. Στην ιεραρχική κληρονομικότητα, υπάρχει μια βασική κλάση και πολλές παραγόμενες κλάσεις. Υπάρχει ένας ειδικός τύπος που είναι γνωστός ως Hybrid inheritance. Είναι ένας συνδυασμός δύο ή περισσότερων τύπων κληρονομικότητας.
Εικόνα 01: Κληρονομικότητα
Στην πολλαπλή κληρονομικότητα υπάρχουν πολλές βασικές κλάσεις και μία παραγόμενη κλάση. Ας υποθέσουμε ότι οι κλάσεις Α και Β είναι οι βασικές κλάσεις. Η κλάση C είναι η παραγόμενη κλάση. Εάν και οι δύο κλάσεις Α και Β έχουν την ίδια μέθοδο και ο προγραμματιστής καλέσει αυτήν τη μέθοδο από την παραγόμενη κλάση, θα προκαλέσει πρόβλημα ασάφειας. Η κληρονομιά δύο κλάσεων μπορεί να προκαλέσει σφάλμα χρόνου μεταγλώττισης. Επομένως, η πολλαπλή κληρονομικότητα δεν υποστηρίζεται στην Java. Μπορεί να χρησιμοποιηθεί μια διεπαφή για να ξεπεραστεί αυτό το πρόβλημα.
Τι είναι η διεπαφή στην Java;
Η αφαίρεση είναι μια διαδικασία απόκρυψης των λεπτομερειών υλοποίησης και εμφάνισης μόνο των λειτουργιών στον χρήστη. Η αφαίρεση μπορεί να επιτευχθεί χρησιμοποιώντας Abstract Classes ή Interfaces. Μια αφηρημένη μέθοδος είναι μια μέθοδος χωρίς υλοποίηση. Μια κλάση με τουλάχιστον μία αφηρημένη μέθοδο είναι μια αφηρημένη κλάση. Παράδειγμα αφηρημένης τάξης είναι το εξής.
abstract class A{
abstract void sum();
}
Υποθέστε ότι υπάρχουν δύο αφηρημένες κλάσεις ως Α και Β. Για να εφαρμόσετε αφηρημένες μεθόδους των Α και Β, δημιουργείται μια νέα κλάση C. Στη συνέχεια, η κλάση C θα πρέπει να επεκτείνει τόσο το A όσο και το B., αλλά η πολλαπλή κληρονομικότητα δεν υποστηρίζεται στην Java. Επομένως, θα πρέπει να χρησιμοποιείτε διεπαφές. Οι διεπαφές μπορούν να χρησιμοποιηθούν για τη δήλωση μεθόδων, αλλά δεν είναι δυνατός ο ορισμός μεθόδων. Δεν είναι δυνατή η δημιουργία αντικειμένου χρησιμοποιώντας διεπαφές. Η κλάση C θα πρέπει να εφαρμόζει όλες τις μεθόδους στη διεπαφή Α και Β.
interface A{
void sum();
}
διεπαφή Β{
void sub();
}
class C υλοποιεί A, B{
public void sum(){
System.out.println("Summation");
}
public void sub(){
System.out.println("Αφαίρεση");
}
}
Τώρα, στο κύριο πρόγραμμα είναι δυνατό να δημιουργήσετε ένα αντικείμενο του C και να καλέσετε και τις δύο μεθόδους.
public static void main (String args) {
C obj=νέο C();
obj.sum();
obj.sub();
}
Έτσι, οι διεπαφές μπορούν να χρησιμοποιηθούν για την υλοποίηση πολλαπλής κληρονομικότητας.
Μια άλλη χρήση των διεπαφών είναι ότι παρέχει ασφάλεια. Ανατρέξτε στον παρακάτω κωδικό.
interface A {
void sum ();
}
class B υλοποιεί A {
public void sum () {
System.out.println("Summation");
}
πολλαπλασιασμός δημόσιου κενού () {
System.out.println("Πολλαπλασιασμός");
}
}
Όταν δημιουργείτε ένα αντικείμενο του B, είναι δυνατό να καλέσετε και τις δύο μεθόδους άθροισμα () και πολλαπλασιασμό (). Εάν ο προγραμματιστής θέλει να περιορίσει χρησιμοποιώντας τη συνάρτηση πολλαπλασιασμού (), είναι δυνατό ως εξής.
public static void main(String args){
A obj=new B();
obj.sum();
}
A obj=νέο B(); θα δημιουργήσει ένα αντικείμενο. Είναι τύπου Α και η μνήμη εκχωρείται ως Β. Είναι δυνατή η κλήση της sum() αλλά δεν μπορεί να εκτελεστεί η multiply(). Αυτός ο περιορισμός γίνεται με χρήση διεπαφών.
Ποιες είναι οι ομοιότητες μεταξύ κληρονομικότητας και διεπαφής στην Java;
- Και οι δύο έννοιες σχετίζονται με Αντικειμενοστραφή Προγραμματισμό
- Και τα δύο αντιπροσωπεύουν σχέση IS-A.
Ποια είναι η διαφορά μεταξύ κληρονομικότητας και διεπαφής στην Java;
Κληρονομία έναντι διεπαφής σε Java |
|
Η κληρονομικότητα είναι μια έννοια OOP για την εξαγωγή νέων κλάσεων από τις υπάρχουσες κλάσεις. | Η διεπαφή είναι ένας μηχανισμός στο OOP για την εφαρμογή αφαίρεσης και πολλαπλής κληρονομικότητας. |
Usage | |
Η κληρονομικότητα παρέχει δυνατότητα επαναχρησιμοποίησης κώδικα. | Οι διεπαφές παρέχουν αφαίρεση και πολλαπλή κληρονομικότητα. |
Σύνοψη – Κληρονομικότητα έναντι διεπαφής σε Java
Η Java είναι μια γλώσσα προγραμματισμού πολλαπλών παραδειγμάτων που υποστηρίζει αντικειμενοστραφή προγραμματισμό. Η κληρονομικότητα και οι διεπαφές σχετίζονται με αντικειμενοστραφή προγραμματισμό. Η διαφορά μεταξύ κληρονομικότητας και διεπαφής είναι ότι η κληρονομικότητα είναι η εξαγωγή νέων κλάσεων από υπάρχουσες κλάσεις και οι διεπαφές είναι η υλοποίηση αφηρημένων κλάσεων και πολλαπλής κληρονομικότητας.
Λήψη της έκδοσης PDF του Inheritance vs Interface σε Java
Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κάντε λήψη της έκδοσης PDF εδώ Διαφορά μεταξύ κληρονομικότητας και διεπαφής στην Java