La base di tutto sono le classi, nella programmazione Object Oriented (OOP).
Una classe è un tipo di dato complesso che rappresenta una determinata categoria di elementi.
Ad esempio nel linguaggio comune "automobile" è una classe che indica, genericamente, un veicolo a quattro ruote per trasporto persone. "Volkswagen Golf" è una classe derivata dalla classe "automobile", mentre "la mia Vokswagen Golf" è un oggetto, un'ISTANZA della classe "Volkswagen Golf" (la cui superclasse è "automobile"). Una classe derivata eredita le funzionalità della classe base.
Inoltre a te non serve sapere come funziona un'auto, ma ti basta conoscere i metodi per utilizzarla: girare la chiave, spingere sull'acceleratore, ecc. Questo principio si chiama incapsulamento: il funzionamento interno di una classe deve essere nascosto all'esterno, pertanto gli unici punti di comunicazione fra l'interno e l'esterno della classe dovranno essere dei metodi preposti (nel nostro caso, gli strumenti sono il volante, i pedali, ecc.).