Η Java είναι μια από τις πιο χαρακτηριστικές γλώσσες αντικειμενοστραφούς προγραμματισμού. Όπως και στην φύση κάθε οντότητα ή αντικείμενο έχει ιδιότητες και χαρακτηριστικά που το προσδιορίζουν, το κάνουν μοναδικό ή το ομαδοποιούν με άλλα αντικείμενα με συγγενικά χαρακτηριστικά, έτσι και στην Java προσπαθούμε να υλοποιήσουμε αντικείμενα δίνοντάς τους τις κατάλληλες  ιδιότητες και χαρακτηριστικά ώστε να προσεγγίζουν το επιθυμητό προγραμματιστικό αποτέλεσμα.
Στην java λοιπόν ένας πελάτης καταστήματος που αγοράζει προϊόντα θα «μεταφραστεί» σε κλάσεις (classes),  attributes (γνωρίσματα )και μεθόδους (methods).
Οι οντότητες θα είναι κλάσεις. Τα χαρακτηριστικά τους θα είναι γνωρίσματα και οι δράσεις τους θα είναι μέθοδοι. Έτσι για παράδειγμα στην προηγούμενη αναφορά μας, ο πελάτης το κατάστημα και τα προϊόντα αποτελούν τις οντότητες ενώ η αγορά ενός ή περισσοτέρων προϊόντων θα αποτελεί μια μέθοδο. Το προσδιοριστικό στοιχείο των οντοτήτων είναι  ότι μπορούν να είναι αυτόνομες και αυτοτελείς. Βέβαια όπως και στο φυσικό κόσμο μπορεί άλλοτε να αποτελούν ένα μέρος του όλου δηλαδή της γενικής εικόνας  ή αναπόσπαστο κομμάτι μιας άλλης οντότητας. Αυτή η αναπαράσταση του φυσικού κόσμου μας δίνει την δυνατότητα να υλοποιήσουμε πιο πολύπλοκες και σύνθετες σχέσεις μεταξύ των οντοτήτων, όπως είναι οι σχέσεις κληρονομικότητας.

Μια οντότητα «γονέας» μπορεί να προσδίδει σε μια άλλη οντότητα «παιδί» κάποια γνωρίσματα ή ακόμα και μεθόδους. Δηλαδή, σε αυτή την περίπτωση λέμε ότι το «παιδί» κληρονομεί από τον γονέα.
Για να γίνει πιο κατανοητό, φανταστείτε τον διευθυντή και τους υπαλλήλους μιας εταιρίας. Μπορεί να έχουν διαφορετικές αρμοδιότητες και μάλλον αμοιβές αλλά έχουν ένα κοινό χαρακτηριστικό σε σχέση με την εταιρεία. Και  οι δύο οντότητες είναι εργαζόμενοι σε αυτή.
Κοινά χαρακτηριστικά συνήθως προδιαθέτουν για σχέσεις κληρονομικότητας ή εξάρτησης.
Μια σχέση εξάρτησης όμως δεν αποτελεί και κληρονομικότητα. Με άλλα λόγια οι τάξεις-αίθουσες ενός σχολείου, δεν αποτελούν σχέση κληρονομικότητας αλλά εξάρτησης, αφού ένα σχολείο χωρίς αίθουσες δεν θα μπορούσε ποτέ να ήταν σχολείο.

Γίνετε κατανοητό ότι, στον αντικειμενοστραφή προγραμματισμό, όσο μεγαλύτερη ανάλυση  και περισσότερη εμβάθυνση  κάνουμε στο πρόβλημα που θέλουμε να λύσουμε τόσο πληρέστερη και εγκυρότερη θα είναι η επίλυση του προβλήματος.