Construire une classe |
Une classe se decompose classiquement en un ensemble de variables, de methodes et d'un constructeur de classe. Il n'y a pas ici de destructeur : en effet, le langage dispose d'un garbage collector qui se charge de liberer les objets devenus inutiles.
On indiquera qu'une nouvelle classe herite d'une autre par le mot cle extends :
Si on a besoin du constructeur de la classe mere pour initialiser les elements de la fille, on fera appel a la methode super() dans le constructeur de la fille.
Les elements (attributs) d'une classes sont declares avec divers controles d'acces. Ces controles d'acces sont un peu differents de ceux de C++ :

Lorsqu'un element d'une classe est declare static, quel que soit le nombre d'instances de cette classe, il n'existera qu'un et un seul de ces elements (qui sera donc partage). Les autres elements sont declares dynamiquement (lors du new qui cree une instance de cette classe).
Programme :
| public class ma_classe
{
private static int valeur ; private static autre_classe autre_obj ; /* pas de constructeur pour cette classe appelee directement */ public void affiche() { System.out.println("Tout le monde peut voir ma valeur : " + valeur) ; } protected void incremente(int combien) {
valeur = valeur + combien ; private static void reinit() { valeur = 0 ; } /* methode de depart appelee par <java ma_classe> */ public static void main(String[] args) {
autre_obj = new autre_classe() ; autre_obj.travaille() ; reinit() ; class autre_classe {
autre_classe() {
obj1 = new ma_classe() ; obj2 = new ma_classe() ; autre_classe(int param) {
void travaille() {
obj1.affiche() ; obj2.affiche() ; obj1.incremente(5) ; obj1.affiche() ; obj2.affiche() ; /* obj.reinit() ; ne serait pas accepte a la compilation */ |
Resultat de l'execution :
| Le constructeur de autre_classe.
Tout le monde peut voir ma valeur : 0 Tout le monde peut voir ma valeur : 0 Les membres du package incremente 0 de 5 Tout le monde peut voir ma valeur : 5 Tout le monde peut voir ma valeur : 5 |