java - 当重写一个方法时,我们不是重写整个方法吗?我尝试覆盖 java.awt.Container.paint

标签 java eclipse applet awt overriding

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

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 已启动”。

如果 override 意味着重写整个方法,那么当我只写 g.drawStrings 而没有时,这意味着我没有定义任何下面将显示的字符串。那么“Applet Started”文本不应该消失吗?

最佳答案

实际上,您正在重写java.awt.Container.paint(Graphics g),因为Applet和层次结构中直到Container的任何类都没有。 code> 提供自己的 paint() 实现。

这是您要重写的方法(是的,方法总是作为一个整体被重写 - 您不能仅重写方法的一部分。您唯一能做的就是调用被重写的方法,例如 super.paint(g)).

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

顺便说一句,请注意,Applet 正在被弃用,并且某些浏览器已经完全停用了支持 Applet 所需的 native API。

关于java - 当重写一个方法时,我们不是重写整个方法吗?我尝试覆盖 java.awt.Container.paint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37131239/

相关文章:

java - 在java中获取反射类的实例

用于检测带有可选句点的版本的 Java 正则表达式

java - KafkaConsumer 0.10 Java API 错误信息 : No current assignment for partition

python - Django - 管理工具中缺少一些权限

Eclipse 无法识别 Play 项目中的 GreenMail

java - 让 Java 应用程序作为 Applet 或独立运行

java - 在同一个类中调用堆栈上的方法

android - 自动短信应用程序崩溃

java - 动态查找java缓存目录

java - repaint() 方法在无限 for 循环中的行为如何?