我的老师编写和组织代码的方式与我的补充教科书中提出的非常不同。在最近的一个实验中,我们需要使用该wheels
库在一个窗口中显示多个对象。这是Snowman
我老师写的课程(为方便起见,未包含其他对象的代码):
public class Snowman {
private Ellipse _top;
private Ellipse _middle;
private Ellipse _bottom;
public Snowman() {
_top = new Ellipse();
_top.setColor(Color.WHITE);
_top.setFrameColor(Color.BLACK);
_top.setFrameThickness(1);
_top.setSize(80, 80);
_middle = new Ellipse();
_middle.setColor(Color.WHITE);
_middle.setFrameColor(Color.BLACK);
_middle.setFrameThickness(1);
_middle.setSize(120, 120);
_bottom = new Ellipse();
_bottom.setColor(Color.WHITE);
_bottom.setFrameColor(Color.BLACK);
_bottom.setFrameThickness(1);
_bottom.setSize(160, 160);
}
public void setLocation(int x, int y) {
_top.setLocation(x + 40, y - 170);
_middle.setLocation(x + 20, y - 100);
_bottom.setLocation(x, y);
}
}
除其他外,此对象稍后在SnowmanCartoon
类中实例化:
public class SnowmanCartoon extends Frame{
private Snowman _snowman;
private Eyes _eyes;
private Hat _hat;
private Bubble _bubble;
public SnowmanCartoon() {
_snowman = new Snowman();
_snowman.setLocation(100, 300);
_eyes = new Eyes();
_eyes.setLocation(165, 150);
_hat = new Hat();
_hat.setLocation(152, 98);
_bubble = new Bubble();
_bubble.setLocation(280, 60);
}
public static void main(String[] args) {
new SnowmanCartoon();
}
}
以下是我的担忧:
在这两个类中,为什么会有一个与类同名的方法,它的目的是什么?
为什么该方法
setLocation()
是 void 方法,而该方法Snowman()
不是,即使Snowman()
不返回任何内容?在
SnowmanCartoon
类中,当它说private Snowman _snowman;
and时_snowman = new Snowman();
,是Snowman
指Snowman
类还是Snowman()
方法?如果
Snowman
对象的实例化是指Snowman()
设置其所有属性的方法,为什么我不需要使用点运算符:Snowman.Snowman()
?在我的教科书中,实例变量和方法在一个类中声明并在另一个类中实例化。但是,它们似乎同时出现在我老师的代码中。