我有一个关于否决的问题。我认为重写一个方法就是重写那个方法。但是,当我在研究如何重写时,我有一个疑问。假设我编写了以下代码:
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");
}
}
如果涂漆方法仅包括g.拉绳(“hi”,25,75);如果showstatus不存在,我会收到一条消息“applet started”。
如果override意味着重写整个方法,当我只写g.drawstrings而不写时,它意味着我没有定义任何将在下面显示的字符串。那么,“applet启动”文本不应该消失吗?
1条答案
按热度按时间soat7uwm1#
实际上,你是在压倒一切
java.awt.Container.paint(Graphics g)
因为两者都不是Applet
层次结构中的任何类Container
提供自己的实现paint()
.这就是您要重写的方法(是的,方法总是作为一个整体被重写—您不能只重写方法的一部分。唯一能做的就是调用重写的方法,比如
super.paint(g)
).然而,
java.awt.Container.paint()
不包含任何特定于applet的代码,因此(Applet started
)很明显是由applet容器打印的,比如浏览器(它仍然对其状态栏有主控件)或applet查看器。另一方面,请注意applet正在被弃用,一些浏览器已经取消了支持applet所需的本机api。