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
框架决定更新视图时,它都会调用此方法,该方法具有绘制矩形的效果。
谁能帮我理解这段代码中发生了什么?
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
框架决定更新视图时,它都会调用此方法,该方法具有绘制矩形的效果。