java:abstract_classes_vs_interfaces

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:abstract_classes_vs_interfaces [2015/03/02 07:21]
gthanos
java:abstract_classes_vs_interfaces [2019/04/05 17:34] (current)
gthanos
Line 9: Line 9:
 | **Περιοριστές πρόσβασης** | Σε ένα interface όλες οι δηλώσεις θεωρούνται //public// | Μία abstract κλάση μπορεί να έχει επιμέρους προσδιοριστές πρόσβασης για τα πεδία και τις μεθόδους της, όπως //public, protected, package-private,​ private//. | | **Περιοριστές πρόσβασης** | Σε ένα interface όλες οι δηλώσεις θεωρούνται //public// | Μία abstract κλάση μπορεί να έχει επιμέρους προσδιοριστές πρόσβασης για τα πεδία και τις μεθόδους της, όπως //public, protected, package-private,​ private//. |
 | **Λειτουργικότητα** | Ένα interface χρησιμοποιείται για να δηλώσει την εξωτερική διεπαφή μίας κλάσης με άλλες κλάσεις | Μία abstract κλάση μπορεί να δηλώσει τόσο της εξωτερική διεπαφή,​ όσο και λεπτομέρειες της εσωτερικής υλοποίησης | | **Λειτουργικότητα** | Ένα interface χρησιμοποιείται για να δηλώσει την εξωτερική διεπαφή μίας κλάσης με άλλες κλάσεις | Μία abstract κλάση μπορεί να δηλώσει τόσο της εξωτερική διεπαφή,​ όσο και λεπτομέρειες της εσωτερικής υλοποίησης |
-| **Χρήση** | Εάν διαφορετικές υλοποιήσεις κλάσεων χρησιμοποιούν τις ίδιες μεθόδους για την διεπαφή τους με άλλες κλάσεις τότε ένα interface θεωρείται κατάλληλο για να δηλώσει τα κοινά τους χαρακτηριστικά. ​ | Εάν διαφορετικές υλοποιήσεις κλάσεων έχουν κοινά χαρακτιριστικά που αφορούν την εσωτερική τους κατάσταση (π.χ. κοινές μεταβλητές) τότε η χρήση μίας abstract κλάσης ως κοινός πρόγονος είναι η σωστότερη επιλογή. |+| **Χρήση** | Εάν διαφορετικές υλοποιήσεις κλάσεων χρησιμοποιούν τις ίδιες μεθόδους για την διεπαφή τους με άλλες κλάσεις τότε ένα interface θεωρείται κατάλληλο για να δηλώσει τα κοινά τους χαρακτηριστικά. ​ | Εάν διαφορετικές υλοποιήσεις κλάσεων έχουν κοινά χαρακτηριστικά που αφορούν την εσωτερική τους κατάσταση (π.χ. κοινές μεταβλητές) τότε η χρήση μίας abstract κλάσης ως κοινός πρόγονος είναι η σωστότερη επιλογή. |
 | **Ταχύτητα** | Λιγότερο ταχύ | Ταχύτερο |  | **Ταχύτητα** | Λιγότερο ταχύ | Ταχύτερο | 
 | **Επεκτασιμότητα** | Θεωρείται κακή προγραμματιστική πρακτική η επέκταση ενός Interface. Ένα Interface δεν θα πρέπει να σχεδιάζεται με γνώμονα την μελλοντική του επέκταση. | Μία abstract κλάση μπορεί να αλλάξει την υλοποίηση της και να επεκταθεί,​ αρκεί να περιέχει default υλοποιήσεις για τις νέες μεθόδους που ορίζει. | | **Επεκτασιμότητα** | Θεωρείται κακή προγραμματιστική πρακτική η επέκταση ενός Interface. Ένα Interface δεν θα πρέπει να σχεδιάζεται με γνώμονα την μελλοντική του επέκταση. | Μία abstract κλάση μπορεί να αλλάξει την υλοποίηση της και να επεκταθεί,​ αρκεί να περιέχει default υλοποιήσεις για τις νέες μεθόδους που ορίζει. |
 +
 +
 +|Προηγούμενο:​ [[ :​java:​abstract_classes | Abstract Κλάσεις ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :​java:​instanceof| Τελεστής instanceof ]]|
  
java/abstract_classes_vs_interfaces.1425280915.txt.gz · Last modified: 2016/02/26 11:15 (external edit)