我有一个关于覆盖的问题。我认为重写一个方法就是重写那个方法。但是,当我在研究如何改写时,我有一个疑问。假设我编写了以下代码:
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'文字消失了?
答案 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。