Java (γλώσσα προγραμματισμού): Ποια είναι η διαφορά μεταξύ τύπων και κατηγοριών ή διεπαφών;                    https://www.quora.com/topic/Eclipse-software


Απάντηση 1:

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

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

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

Μερικά παραδείγματα:

int i = 1;
String str = "Γεια σας κόσμος.";

Τόσο το i όσο και το 1 είναι τύπου int. Τόσο ο str όσο και ο κυριολεκτικός "Hello world." είναι τύπου String.

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

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