Java 有人能解释一下某些方法是如何在不被调用的情况下被调用的吗?
这里有一个例子。运行代码时,将调用Java 有人能解释一下某些方法是如何在不被调用的情况下被调用的吗?,java,inheritance,Java,Inheritance,这里有一个例子。运行代码时,将调用setup()和draw()方法并影响程序。我不明白的是,没有方法调用 这是如何做到的 import processing.core.PApplet; public class MyDisplay extends PApplet { public void setup() { size(400, 400); background(200, 200, 200); } public void
setup()
和draw()
方法并影响程序。我不明白的是,没有方法调用
这是如何做到的
import processing.core.PApplet;
public class MyDisplay extends PApplet {
public void setup()
{
size(400, 400);
background(200, 200, 200);
}
public void draw()
{
fill(255, 255, 0);
ellipse(200, 200, 390, 390);
fill(0, 0, 0);
ellipse(120, 130, 50, 70);
ellipse(280, 130, 50, 70);
noFill();
arc(200, 280, 75, 75, 0, PI);
}
}
从文档中:
“程序启动时,setup()函数只调用一次。”
And Draw():“在setup()之后直接调用,并连续执行其块中包含的代码行,直到程序停止或调用noLoop()。”
调用此函数是因为您的类扩展了PApplet
您可以从以下文档中了解有关函数的更多信息:
“程序启动时,setup()函数只调用一次。”
And Draw():“在setup()之后直接调用,并连续执行其块中包含的代码行,直到程序停止或调用noLoop()。”
调用此函数是因为您的类扩展了PApplet
您可以阅读有关函数的更多信息以下是一个简单的示例: 由于
MyDisplay
没有定义任何构造函数,编译器将生成默认构造函数。此构造函数将类似于:
public MyDisplay(){
super();
}
它是必需的,因为需要生成超类
如果我相信PApplet的文档说明
当程序启动时,setup()函数被调用一次
对于绘图
在setup()之后直接调用
构造函数可能看起来像(在一个简单的版本中)
注意:这些代码不是真实的,可能与事实相去甚远,但这是为了显示执行模式,而不是背后的逻辑
这意味着当构建MyDisplay
实例时,它将自动调用PApplet
的构造函数,该构造函数将执行在MyDisplay
中重写的这两个方法
一个好的建议是将注释@Override
添加到这两个方法中,以便容易地注意到可以从上面执行的方法,因为这些方法是定义和重写的
public class MyDisplay extends PApplet {
@Override
public void setup()
{
...
}
@Override
public void draw()
{
...
}
}
下面是一个简单的例子: 由于
MyDisplay
没有定义任何构造函数,编译器将生成一个默认构造函数。此构造函数类似于:
public MyDisplay(){
super();
}
它是必需的,因为需要生成超类
如果我相信PApplet的文档说明
当程序启动时,setup()函数被调用一次
对于绘图
在setup()之后直接调用
构造函数可能看起来像(在一个简单的版本中)
注意:这些代码不是真实的,可能与事实相去甚远,但这是为了显示执行模式,而不是背后的逻辑
这意味着当构建MyDisplay
实例时,它将自动调用执行这两个方法的PApplet
构造函数。在MyDisplay
中重写的方法
一个好的建议是将注释@Override
添加到这两个方法中,以便容易地注意到可以从上面执行的方法,因为这些方法是定义和重写的
public class MyDisplay extends PApplet {
@Override
public void setup()
{
...
}
@Override
public void draw()
{
...
}
}
javadoc对此进行了解释。读它:我读过它,但以我的经验来看,它几乎毫无意义。如果可能的话,我会很感激简化一个简单的技巧,当你扩展一个类时,请记住,它不仅仅是你所看到的。构造函数将在超类中被调用,它可以做“任何事情”。通常,向每个被重写的方法(如
setup
和draw
)添加@Override
注释有助于记住这些方法可以从超类访问(因为在超类或更高级别中定义)。好的,但在本例中,我假设setup()和draw()是方法不存在于超类中,因为不存在@Override correct?@LinuxOracleUser方法,因此可以省略@Override
注释,编译器不会对此进行抱怨。但是,大多数IDE都会添加注释,javadoc对此进行了解释。读它:我读过它,但以我的经验来看,它几乎毫无意义。如果可能的话,我会很感激简化一个简单的技巧,当你扩展一个类时,请记住,它不仅仅是你所看到的。构造函数将在超类中被调用,它可以做“任何事情”。通常,向每个被重写的方法(如setup
和draw
)添加@Override
注释有助于记住这些方法可以从超类访问(因为在超类或更高级别中定义)。好的,但在本例中,我假设setup()和draw()是方法不存在于超类中,因为不存在@Override correct?@LinuxOracleUser方法,因此可以省略@Override
注释,编译器不会对此进行抱怨。但是,大多数IDE都会添加注释。这仍然不能解释方法是如何被调用的。这仍然不能解释方法是如何被调用的。