Bonjour à tous,

Concernant l'instanciation d'une classe qui hérite de la classe JApplet( dpnc d'une applet) , voici les deux explications qui sont données :


Nous avons vu qu'une applet est un programme Java particulier.
Il s'agit toujours d'une sous-classe de Applet, elle-même sous-classe de Panel.
Ce programme n'est pas exécuté par l'interpréteur java.exe (lequel appelle toujours la méthode principale main()).

C'est l'interpréteur Java intégré dans le navigateur qui prend en charge l'exécution, par le mécanisme suivant.

Il repère la présence de la balise <applet ...> et charge le fichier .class présent obligatoirement dans l'attribut CODE (éventuellement en le cherchant à l'URL indiquée par CODEBASE).

Puis il charge les classes auxiliaires, notamment les classes spécifiées par les directives import

Puis, sans construction explicite dans le programme (et pour cause : il n'y a pas de constructeur d'instance de la classe applet !), il crée automatiquement une instance de la classe spécifiée.

Il fait alors appel automatiquement à la méthode init() de la classe Applet, que le programmeur aura en général redéfinie (sinon une méthode init() par défaut s'exécutera).
En pratique, cette méthode est utilisée (donc redéfinie) pour initialiser l'objet applet créé, jouant ainsi le rôle du constructeur.

Puis le navigateur exécute automatiquement la méthode start() (redéfinie ou par défaut).
Voici une autre explication tirée d'un livre, qui me semble contredire la première explication
Etat construit:
le processeur java instancie un objet Applet en utilisant le constructeur par défaut .
si la définition de l'applet ne comprend aucun constructeur par défaut , l'exécution signale une erreur de type NoSuchMethodError, indiquant que le constructeur par défaut n'a pas pu être trouvé
Etat initialisé : dès qu'un objet applet se trouve dans un état construit, le processeur lui envoie le messag einit qui le fait passer de l'état construit à l'état initialisé.
L'état construit est donc très bref : il ne dure que le temps de l'exécution de la méthode init
Pouvez-vous m'expliquer ce qui justifie la différence d'explication concernant notamment l'usage du constructeur par défaut pour un applet et cette autre explication explication donnée

Puis, sans construction explicite dans le programme (et pour cause : il n'y a pas de constructeur d'instance de la classe applet !), il crée automatiquement une instance de la classe spécifiée.
J'avoue que je suis un peu perdue avec ces explications qui semblent contradictoires.

Merci beaucoup à vous de votre aide sur ce sujet.

Cordialement.

new_wave