Bah normalement, en POO tes variables ne doivent pas être public.
Tu les met en private et tu fait des fonctions d'accès qui elles serons public. (get & set)
Pour ce qui est des fonctions, bah tu met en private ce qui sert uniquement a l'objet, en interne, et en public
ce que l'utilisateur peut utiliser.
Bon après si tu veux moins te prendre la tête, tu met certaines variables en public, et d'autres en private :
celles qui ne peuvent avoir que certaines valeur (par exemple une variable qui va de 0 a 100 ne doit pas être public,
au moins si tu passe par une fonction set tu peut remettre la variable a 100 ou 0 si ça dépasse).
Après si tu veux une variable propre a la classe, mais une seule même variable pour toutes les instances
(par exemple une variable qui compte les instances) tu la déclare en static.