没有 class 的 Java2D 方法调用
Java2D method call without class
我刚开始学习Java,试着画了一些矩形。
我有 运行 this 示例,但无法理解一件事:
class ShapesDemo2D 有一个构造函数:
public void init() {
//Initialize drawing colors
setBackground(bg);
setForeground(fg);
}
我明白setBackground
是一种方法
- 但是没有 class 或实例引用怎么能调用呢?
这是 Component.java 文件中抽象组件 class 的一个方法。
- 不应该像
Component.setBackground(bg)
或 componentInstance.setBackground(bg)
吗?
但是Component是抽象的class,所以不能实例化,也不能调用它的方法
- 那么如何调用这个方法呢?
您忘记了 class 代码顶部的 ShapesDemo2D extends JApplet
,这意味着 class 扩展了 另一个 class、JApplet 等上述方法中的代码有效地调用了 super.setBackground(bg);
和 super.setForeground(fg);
。超级 class、JApplet 有 这些方法,因为根据 JApplet API,class 从具有这些方法的组件扩展,这意味着 ShapesDemo2D 将也继承了方法
话虽如此,请抛弃本教程,因为小程序不再受支持,是已死技术并且已死时间最长时间,学习一门死技术是没有意义的。
旁注,您声明:
class ShapesDemo2D has a constructor:
public void init() {
//Initialize drawing colors
setBackground(bg);
setForeground(fg);
}
但这实际上不是构造函数而是一种方法。 ShapesDemo2D class 的构造函数如下所示:
public ShapesDemo2D() {
// .....
}
这似乎是一种迂腐的区分,但编程就是要尽可能准确地使用您的思维和代码。 Java 编译器严格且无情,您也必须如此。
我刚开始学习Java,试着画了一些矩形。
我有 运行 this 示例,但无法理解一件事: class ShapesDemo2D 有一个构造函数:
public void init() {
//Initialize drawing colors
setBackground(bg);
setForeground(fg);
}
我明白setBackground
是一种方法
- 但是没有 class 或实例引用怎么能调用呢?
这是 Component.java 文件中抽象组件 class 的一个方法。
- 不应该像
Component.setBackground(bg)
或componentInstance.setBackground(bg)
吗?
但是Component是抽象的class,所以不能实例化,也不能调用它的方法
- 那么如何调用这个方法呢?
您忘记了 class 代码顶部的 ShapesDemo2D extends JApplet
,这意味着 class 扩展了 另一个 class、JApplet 等上述方法中的代码有效地调用了 super.setBackground(bg);
和 super.setForeground(fg);
。超级 class、JApplet 有 这些方法,因为根据 JApplet API,class 从具有这些方法的组件扩展,这意味着 ShapesDemo2D 将也继承了方法
话虽如此,请抛弃本教程,因为小程序不再受支持,是已死技术并且已死时间最长时间,学习一门死技术是没有意义的。
旁注,您声明:
class ShapesDemo2D has a constructor:
public void init() { //Initialize drawing colors setBackground(bg); setForeground(fg); }
但这实际上不是构造函数而是一种方法。 ShapesDemo2D class 的构造函数如下所示:
public ShapesDemo2D() {
// .....
}
这似乎是一种迂腐的区分,但编程就是要尽可能准确地使用您的思维和代码。 Java 编译器严格且无情,您也必须如此。