Applet类在此代码段中会发生什么?

时间:2019-06-17 00:22:14

标签: java oop applet

有人可以帮助我了解这段代码中发生了什么吗?

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

我的理解是,我创建了一个名为 aClass class 继承)(因为它成为一个女儿方法属性 >;然后覆盖 绘画 方法(该方法是从Applet继承的),以及此方法期望从类创建的对象作为参数(我们将其命名为 g 图形 ,然后我们将 drawRect 方法称为适用于 g 对象(由 Graphics 创建类);这样,当执行 aClase class 时,将绘制一个 rectangle 这样吗?

1 个答案:

答案 0 :(得分:2)

Applet是一种已过时的旧技术,您应该考虑使用诸如Java Web Start之类的较新技术。也就是说,除了某些术语外,您的理解基本上是正确的。

  

我创建了一个名为aClass的类,该类继承了Applet类的方法和属性(因为它成为子类);

扩展类意味着您基于公共类合同和超类的私有实现(aClass)创建一个新的子类(在本例中为Applet)。 aClass的行为方式应在较高级别上尊重Liskov substitution principle,这意味着在任何可以使用Applet的地方,您也应该可以使用aClass。这意味着要遵守AppletaClass的公共合同。

  

Applet类;然后覆盖paint方法(该方法是从Applet继承的),

部分正确。 aClass覆盖 paint,这意味着它将在paint实例上调用aClass而不是{{1}中的默认定义时调用}。它不会覆盖,因为仍然可以调用此方法的Applet实现。您还应该使用super批注来批注覆盖的方法

@Override
  

此方法需要一个对象作为从Graphics类创建的参数(我们将其命名为g)

是的,或者就像@Override public void paint(Graphics g){ // calls paint from higher up the inheritance tree super.paint(g); g.drawRect(0, 0, 400, 200); } 扩展了aClass一样,这可能是某些类也扩展了Applet

例如Graphics

  

然后调用适合于g对象(从Graphics类创建)的drawRect方法;

是的。 class FooGraphics extends Graphics { ... }类的公共合同的一部分。

  

以便执行aClase类时,绘制一个矩形,是这样吗?

只要Graphics框架决定更新视图,它将调用此方法,该方法具有绘制矩形的作用。