2016-05-10 22 views
2

Ich habe eine Frage zu überschreiben außer Kraft zu setzen. Ich dachte, dass das Überschreiben einer Methode diese Methode überschreibt. Aber während ich darüber nachdachte, wie man übersteuert, bekam ich Zweifel. Nehmen wir an, ich folgenden Code geschrieben haben:Überschreiben wir beim Überschreiben einer Methode nicht die gesamte Methode? Ich habe versucht, java.awt.Container.paint

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"); 
    } 

} 

Wenn die Farbe Methode enthält nur g.drawString ("Hallo", 25,75); und showStatus existiert nicht, ich bekomme eine Nachricht 'Applet Started'.

Wenn Auslösemittel Umschreiben das Verfahren ganz, wenn ich nur g.drawStrings schreiben, ohne, es bedeutet, dass ich kein String definiert habe, die unten gezeigt werden. Sollte also 'Applet Started' nicht verschwinden?

+0

Fügen Sie die '@ Override' Anmerkung über Sie Methode und versuchen Sie es erneut. – Lefteris008

+2

@ PiXel1225 Welchen Unterschied soll das machen? Die Anmerkung gibt nur einen Kompilierungsfehler, wenn die Methode nichts überschreibt. – Kayaman

+0

@ PiXel1225 wo soll ich hinzufügen? –

Antwort

1

Effektiv Sie zwingende java.awt.Container.paint(Graphics g) da weder Applet noch eine Klasse in der Hierarchie bis zu Container ihre eigenen Implementierung von paint() bieten.

Dies ist die Methode, die Sie überschreiben (und ja, Methoden werden immer als Ganzes überschrieben - Sie können nur einen Teil einer Methode überschreiben. Das einzige, was Sie tun können, ist die überschriebene Methode aufzurufen, wie super.paint(g)) .

jedoch java.awt.Container.paint() enthält keinen Applet-spezifischen Code, daher die Botschaft, die Sie sehen (Applet started) wird offensichtlich durch den Applet Behälter gedruckt - wie der Browser (die immer noch die Haupt Kontrolle über die Statusleiste hat), oder der Applet-Viewer.

Auf einer Seite Bemerkung zu beachten, dass Applets veraltet werden und einige Browser außer Betrieb genommen bereits die erforderlichen nativen APIs überhaupt Applets zu unterstützen.

+0

also, ist es Finsternis? Wenn ich keine ShowStatus-Nachricht definiere, definiert sie die Standardnachricht für mich, richtig? @Andreas Fester –

+1

'java.awt.Container.paint (Graphics g)' eigentlich (die eine Implementierung bietet), aber ja. – Kayaman

+0

also geht es auch nicht ums Überschreiben? –