Cela dépend de ta capacité à apprehender un nouveau concept en réalité, à savoir la notion d'objet. Syntaxiquement parlant c'est très proche du C, et algorithmiquement il n'y a rien de plus qu'en C, à part tout ce qui a trait aux objets.
Concrètement ce qui était une struct en C va devenir une classe. Les fonctions sont en général rattachées à un objet, contrairement au C (méthodes).
Une classe peut découler d'une autre, car n'est qu'une spécialisation d'une autre. Par exemple une voiture est un cas particulier de vehicule, donc a priori voiture (classe fille) hérite de vehicule (classe mère) et implemente des méthodes et/ou des attributs supplémentaires. On peut même réimplémenter des méthodes déjà définies (lien dynamique).
Une différence a bien percevoir est la différence entre déclaration (seul le prototype est spécifié) et implémenté (la fonction est codée). De là découlent trois types de classes :
- les classes "normales", complément implémentées.
- les classes virtuelles, partiellement implémentées, partiellement déclarées
- les interfaces, qui ne sont en fait qu'un ensemble de prototypes.
Les attributs d'une classes et ses méthodes ne sont pas toujours accessibles depuis une autre classe (notion de visibilité : protected, public, private) afin de garantir l'intégrité d'une classe.
D'un point de vue mémoire, l'allocation se fait via un constructeur. La désallocation se fait automatiquement (garbage collector).
Point important, en java tout n'est que référence contrèrement en C. Informatiquement parlant, une référence est comme un pointeur, mais syntaxiquement, tout se passe comme si on manipulait directement l'objet en question (ie opérateur . et non opérateur ->, ce dernier n'ayant de toute façon pas de sens en java).
Bonne chance