在java中创建和初始化对象

时间:2014-08-03 13:45:10

标签: java object

我的问题非常简单和新手。我有一个类,想要创建它的实例。那么我应该使用临时变量然后使用setter分配值,还是应该创建一个对象然后直接将用户输入分配给setter。

class A {
int a;

A(){
    a=0;
}

A(int a){
    this.a=a;
}

}

现在我应该如何创建对象?

  1. 我应该使用临时变量,然后使用构造函数来创建对象。
  2. 我应该创建对象并直接将用户输入分配给实例变量。例如
    aObj.setA(getUserInput());
  3. 请建议。

4 个答案:

答案 0 :(得分:2)

对第一个问题: 无论是。取决于很多事情:

  • 您是否已经知道初始值或默认值应该是什么 是?
  • 如果没有设置任何内容,课程是否会正常/不正确地工作 第一λ
  • 内部变量是否应该有一个setter?

示例:如果我有

class bonkinator {
int timesBonked;

bonk(){
  timesBonked++;
}

getBonks(){
  return timesBonked; // thanks for the correction, Unihedron
}

...

那么我很可能不希望其他代码插入时代,所以我不会给它一个二传手。因此,我想在构造函数中将timesBonked设置为某个初始值,以及该值是否是我选择的值或者调用代码选择的内容取决于我们尝试做什么。

对第二个问题:再次依赖。

  • 你打算从getUserInput()重新使用那个东西吗?
  • 调用getUserInput()会不会惹恼用户或重新运行慢速代码(例如尝试从没有更改的数据库中读取内容)而没有额外的好处?

答案 1 :(得分:1)

在同一个套餐中调用new A();new A(42);

请参阅以下内容:

A a = new A(getUserInput());

A a = new A();
a.a = getUserInput();

没有太大区别,但在代码风格方面选择您的偏好:Java编译器将优化大部分内容。

答案 2 :(得分:1)

这完全取决于设计,但在生产代码中通常采用第二种方式,因为您可能稍后在类中添加新变量,然后如果更改构造函数,则可能会破坏现有代码。

另外

A(){
    a=0;
}

不是必需的,因为实例变量使用默认值初始化,即对于int。

答案 3 :(得分:1)

没有具体的方法可以做到这一点。它纯粹基于你想做的事情。初始化实例后,您可以使用setter来设置值。或者你可以有一个参数构造函数并在初始化点传递值。或者,如果您想要初始化,甚至可以拥有固定值。完全取决于您决定什么是最适合您的方法。