当我看到它有效时,我感到非常惊讶。请解释原因
https://github.com/bethrobson/Head-First-Java/blob/master/chap12/MiniMusicPlayer3.java
public void setUpGui() { // <------- it is not static
ml = new MyDrawPanel();
f.setContentPane(ml);
f.setBounds(30, 30, 300, 300);
f.setVisible(true);
}
public void go() {
setUpGui(); // <--- call without object.setUpGui() !!!
Run Code Online (Sandbox Code Playgroud)
为什么它有效?
对非静态方法 setUpGui() 的调用是从非静态方法 go() 执行的。
当 go() 运行时,必须有一个周围类 MiniMusicPlayer3 的实例,并且可以通过“this”访问它。当执行从 go() 转移到 setUpGui() 时,此上下文仍然有效。
该对象是在调用 go() 方法之前调用构造函数时创建的。
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |