Applet class 的这段代码片段发生了什么?

What happens in this code snippet with the Applet class?

谁能帮我理解这段代码中发生了什么?

public class aClass extends Applet{
    public void paint(Graphics g){
        g.drawRect(0, 0, 400, 200);
    }
}

我的理解是这样的,我创建了一个名字为aClass[=55=的class ] 继承(因为它变成了女儿方法属性[= 小程序的53=]class;然后覆盖paint方法(已被继承来自 Applet),而这个 method 需要一个 object 作为 parameter (我们把 name g) 从 class Graphics,然后我们调用drawRect方法是合适的到 g object(它是从 图形class);这样当 aClase class 被执行时,一个 矩形画的,是这样吗

Applet 是一种古老的、已弃用的技术,您应该考虑更新的技术,例如 Java Web Start。也就是说,除了一些术语外,您的理解大部分是正确的。

I create a class of name aClass that inherit(because it becomes a daughter) methods and attributes of the Applet class;

扩展 class 意味着您创建一个新的 sub-class(在本例中为 aClass),它基于 public 合约和私有实现超级 class (Applet)。 aClass 的行为方式应该在高层次上尊重 Liskov substitution principle,这意味着在任何可以使用 Applet 的地方,您也应该能够使用 aClass。这意味着在 aClass.

中尊重 Applet 的 public 合同

Applet class; then overwrites the paint method(which had been inherited from Applet),

部分正确。 aClass 覆盖 paint 意味着它将在 aClass 的实例上调用 paint 而不是 paint 中的默认定义时调用=12=]。它不会 覆盖 ,因为仍然可以调用此方法的 super 实现。您还应该使用 @Override 注释

注释重写方法
@Override
public void paint(Graphics g){
    // calls paint from higher up the inheritance tree
    super.paint(g); 
    g.drawRect(0, 0, 400, 200);
}

this method expects an object as a parameter (which we put name g) created from the class Graphics,

是的,或者就像 aClass 扩展了 Applet,这可能是一些 class 也扩展了 Graphics.

例如class FooGraphics extends Graphics { ... }

and then we call the drawRect method that is proper to the g object (which was created from the Graphics class);

是的。 public 合同的一部分 Graphics class.

so that when the aClase class is executed, a rectangle is drawn, is it like that?

每当 Applet 框架决定更新视图时,它都会调用此方法,该方法具有绘制矩形的效果。