Πολυμορφισμός υποτύπων
Στην θεωρία γλωσσών προγραμματισμού, πολυμορφισμός υποτύπων είναι μια μορφή πολυμορφισμού τύπων στην οποία ένας υποτύπος είναι ένας τύπος δεδομένων που σχετίζεται σε έναν άλλο τύπο δεδομένων (τον υπερτύπο) με ενός είδους αντικαταστασιμότητας, πράγμα που σημαίνει ότι οι δομές του προγράμματος, συνήθως υπορουτίνες ή συναρτήσεις που γράφτηκαν για να λειτουργούν πάνω σε στοιχεία του υπερτύπου μπορούν επίσης να λειτουργήσουν με τα στοιχεία του υποτύπου. Αν S είναι ένας υποτύπος του Τ, η σχέση υποτύπου γράφεται συχνά S <: Τ, που σημαίνει ότι οποιοσδήποτε όρος του τύπου S μπορεί "να χρησιμοποιηθεί με ασφάλεια σε ένα πλαίσιο όπου" αναμένεται ένας όρος του τύπου Τ. Οι ακριβής σημασιολογία του πολυμορφισμού υποτύπων εξαρτάται σε μεγάλο βαθμό από το τι ακριβώς σημαίνει "μπορεί να χρησιμοποιηθεί με ασφάλεια σε ένα πλαίσιο όπου" σε μία δεδομένη γλώσσα προγραμματισμού. Το σύστημα τύπων μιας γλώσσας προγραμματισμού καθορίζει ουσιαστικά τη δική του σχέση υποκατηγοριών, η οποία μπορεί κάλλιστα να είναι τετριμμένη.

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

Οι συναρτησιακές γλώσσες προγραμματισμού συχνά επιτρέπουν τη λειτουργία υποτύπων σε εγγραφές. Κατά συνέπεια, ο λ-λογισμός με απλό σύστημα τύπων επεκτεταμένος με τύπους εγγραφών είναι ίσως το πιο απλό θεωρητικό πλαίσιο στο οποίο μπορεί να οριστεί και να μελετηθεί κάποια χρήσιμη έννοια υποτύπου. Επειδή ο προκύπτων λογισμός επιτρέπει όρους που έχουν περισσότερους από έναν τύπο, δεν είναι πλέον μία "απλή" θεωρία τύπων. Δεδομένου ότι οι συναρτησιακές γλώσσες προγραμματισμού εξ' ορισμού υποστηρίζουν ανώνυμες συναρτήσεις, που μπορούν επίσης να αποθηκεύονται σε εγγραφές, οι εγγραφές εφοδιασμένες με τη λειτουργία υποτύπου παρέχουν ορισμένα από τα χαρακτηριστικά του αντικειμενοστραφούς προγραμματισμού (εκτός αν προστεθούν στη γλώσσα αναφορές, αυτά τα "αντικείμενα" είναι αμετάβλητα). Συνήθως, οι συναρτησιακές γλώσσες προγραμματισμού παρέχουν επίσης κάποια, συνήθως περιορισμένη, μορφή παραμετρικού πολυμορφισμού. Σε ένα θεωρητικό πλαίσιο, είναι σκόπιμο να μελετήσει κανείς την αλληλεπίδραση των δύο χαρακτηριστικών. Ένα κοινό θεωρητικό πλαίσιο είναι το σύστημα F<:. Διάφοροι λογισμοί που επιχειρούν να συλλάβουν τις θεωρητικές ιδιότητες του αντικειμενοστραφούς προγραμματισμού μπορεί να προκύψουν από το σύστημα F<:.

Η έννοια των υποτύπων σχετίζεται με τις γλωσσικές έννοιες της υπερνυμίας και ολονυμίας. Συνδέεται επίσης με την έννοια της φραγμένης ποσοτικοποίησης στη μαθηματική λογική. Οι υποτύποι δεν πρέπει να συγχέονται με την έννοια της κληρονομικότητας (κλάσεων ή αντικειμένων) των αντικειμενοστρεφών γλώσσών. Η σχέση υποτύπου είναι μια σχέση μεταξύ τύπων (διαπροσωπειών σε αντικειμενοστραφές ιδίωμα), ενώ η κληρονομικότητα είναι μία σχέση μεταξύ υλοποιήσεων, που προκύπτει από μια κάποιο χαρακτηριστικό της γλώσσας το οποίο επιτρέπει σε νέα αντικείμενα να δημιουργηθούν από υπάρχοντα. Σε ορισμένες αντικειμενοστρεφείς γλώσσες, η σχέση υποτύπων καλείται κληρονομικότητα διαπροσωπειών. 
Q9143
θεωρία γλωσσών προγραμματισμού
Concept
Q3240252
πολυμορφισμού τύπων
Concept
Q190087
τύπος δεδομένων
MISC
None
αντικαταστασιμότητας
UNK
Q190686
υπορουτίνες
Concept
None
σχέση
UNK
Q9143
γλώσσα προγραμματισμού
Concept
Q865760
σύστημα τύπων
Concept
None
τετριμμένη
UNK
None
πολυμορφισμού τύπων
UNK
Q79872
αντικειμενοστραφή προγραμματισμό
Concept
Q2713292
πολυμορφισμός υποτύπων
Concept
Q1056428
θεωρία τύπων
Concept
Q193076
συναρτησιακό προγραμματισμό
Concept
Q7135231
παραμετρικό πολυμορφισμό
Concept
None
πολυμορφικό λογισμό λάμβδα
UNK
None
γενικοί τύποι στη Java
UNK
None
πρότυπα σε C++
UNK
None
συναρτησιακές γλώσσες προγραμματισμού
UNK
Q2470517
εγγραφές
Concept
Q855192
λ-λογισμός με απλό σύστημα τύπων
Concept
Q1056428
θεωρία τύπων
Concept
None
ανώνυμες συναρτήσεις
UNK
None
αμετάβλητα
UNK
None
σύστημα F<:
UNK
None
υπερνυμίας
UNK
None
ολονυμίας
UNK
None
φραγμένης ποσοτικοποίησης
UNK
None
κληρονομικότητας
UNK
subclass of