2 votes

Lorsque l'on surcharge une méthode, ne surcharge-t-on pas l'ensemble de la méthode ? J'ai essayé de surcharger java.awt.Container.paint

J'ai une question à propos de l'overriding. Je pensais que surcharger une méthode revenait à réécrire cette méthode. Mais, alors que j'étudiais la manière de surcharger, j'ai eu un doute. Supposons que j'ai écrit le code suivant :

import java.applet.Applet;

import java.awt.Graphics;

public class guitryings_2 extends Applet{

    public void paint( Graphics g )
    {
        g.drawString("Hi", 25, 75);
        showStatus("Deneme");
    }

}

Si la méthode paint ne comprend que g.drawString("Hi",25,75) ; et que showStatus n'existe pas, j'obtiens le message "Applet Started".

Si override signifie réécrire toute la méthode, lorsque j'écris seulement g.drawStrings sans, cela signifie que je n'ai défini aucune chaîne qui sera affichée ci-dessous. Le texte 'Applet Started' ne devrait-il pas disparaître ?

1voto

Andreas Points 16923

En fait, vous remplacez java.awt.Container.paint(Graphics g) puisque ni l'un ni l'autre Applet ni aucune classe de la hiérarchie jusqu'à Container fournissent leur propre implémentation de paint() .

Il s'agit de la méthode que vous surchargez (et, oui, les méthodes sont toujours surchargées dans leur ensemble - vous ne pouvez pas surcharger une partie d'une méthode seulement). La seule chose que vous pouvez faire est d'appeler la méthode surchargée, comme super.paint(g) ).

Cependant, java.awt.Container.paint() ne contient pas de code spécifique à l'applet, d'où le message que vous voyez ( Applet started ) est évidemment imprimée par le conteneur de l'applet - comme le navigateur (qui a toujours le contrôle principal sur sa barre d'état), ou l'Applet Viewer.

Par ailleurs, il convient de noter que les applets sont en voie de dépréciation et que certains navigateurs ont déjà supprimé les API natives nécessaires à la prise en charge des applets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X