eclipse—当重写一个方法时,我们不重写整个方法吗?我试图重写java.awt.container.paint

3lxsmp7m  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(353)

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

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启动”文本不应该消失吗?

soat7uwm

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。

相关问题