覆盖方法时,不要覆盖整个方法吗?我试图覆盖java.awt.Container.paint

时间:2016-05-10 06:52:40

标签: java eclipse applet awt override

我有一个关于覆盖的问题。我认为重写一个方法就是重写那个方法。但是,当我在研究如何改写时,我有一个疑问。假设我编写了以下代码:

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

}

如果paint方法只包含g.drawString(" Hi",25,75);并且showStatus不存在,我收到一条消息' Applet Started'。

如果覆盖意味着重写整个方法,当我只写g.drawStrings时,意味着我没有定义任何将在下面显示的字符串。所以,不应该开始使用Applet'文字消失了?

1 个答案:

答案 0 :(得分:1)

实际上,您要覆盖java.awt.Container.paint(Graphics g),因为Applet和层次结构中Container之前的任何类都不提供paint()的实现。

这是你要覆盖的方法(并且,是的,方法总是被覆盖整个 - 你不能只覆盖方法的一部分。你唯一能做的就是调用重写方法,比如{{1 }})。

但是,super.paint(g)不包含任何Applet特定代码, 因此,您看到的消息(java.awt.Container.paint())显然是由Applet容器打印的 - 就像浏览器(仍然具有对其状态栏的主要控制)或Applet Viewer。

总的来说,请注意Applet已被弃用,并且一些浏览器已经停用所需的本机API以支持Applet。