小编abd*_*dev的帖子

在主类中实例化时,构造函数的正确用法是什么?

我的老师编写和组织代码的方式与我的补充教科书中提出的方式非常不同.在最近的一个实验中,我们需要使用该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);
    }
}    
Run Code Online (Sandbox Code Playgroud)

此对象稍后在SnowmanCartoon类中实例化:

public class SnowmanCartoon extends Frame{ …
Run Code Online (Sandbox Code Playgroud)

java constructor

5
推荐指数
2
解决办法
399
查看次数

实例变量的正确命名约定是什么?

在我的入门编程课程中,我的老师在代码中声明实例变量时总是使用以下命名约定:

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);
    }
} 
Run Code Online (Sandbox Code Playgroud)

但是,在课程教科书中,实例变量不是以下划线开头,而是遵循与基本类型变量(int revolutionsPerMinute)相同的命名约定.当我进行在线搜索时,我发现了几个来源,包括在线Javadoc,它引用了与我的教科书相同的约定.由于我无法重现我的老师所遵循的命名惯例,我对他的惯例是否合法持怀疑态度.会议是否教会我的老师即使不被广泛接受也是如此?

java coding-style naming-conventions

1
推荐指数
1
解决办法
3843
查看次数

构造者是必要的还是仅仅是为了方便?

我正在为我的入门编程课程做家庭作业.我们最近了解了构造函数及其工作原理和工作原理,但我不明白为什么每个对象都需要一个.它似乎只是额外的工作,因为你可以实例化对象并在它们之外运行语句.例如,在测试了编写相同代码的不同方法之后,我发现了这一点

public class MyCartoon extends Frame {
    StickFigure man = new StickFigure();
    public static void main(String[] args) {    
        new MyCartoon();
    }
}
Run Code Online (Sandbox Code Playgroud)

产生与此完全相同的效果:

public class MyCartoon extends Frame {
    StickFigure man;
    public MyCartoon() {
        man = new StickFigure();
    }
    public static void main(String[] args) {
        new MyCartoon();
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以澄清一下吗?

但是,当我尝试在上面的代码实例化的另一个类中的类似代码时,它在尝试编译时抛出了100多个错误.以下代码运行正常.除了StickFigure()构造函数中的代码之外,相同的代码不会:

import wheels.users.*;
import java.awt.Color;

public class StickFigure {

Ellipse head; 
Line torso;
Line leftBackArm;
Line leftForeArm;
Line rightBackArm;
Line rightForeArm;
Line leftUpperLeg;
Line leftLowerLeg;
Line rightUpperLeg;
Line …
Run Code Online (Sandbox Code Playgroud)

java constructor

1
推荐指数
1
解决办法
145
查看次数