我的问题非常简单和新手。我有一个类,想要创建它的实例。那么我应该使用临时变量然后使用setter分配值,还是应该创建一个对象然后直接将用户输入分配给setter。
class A {
int a;
A(){
a=0;
}
A(int a){
this.a=a;
}
}
现在我应该如何创建对象?
aObj.setA(getUserInput());
请建议。
答案 0 :(得分:2)
对第一个问题: 无论是。取决于很多事情:
示例:如果我有
class bonkinator {
int timesBonked;
bonk(){
timesBonked++;
}
getBonks(){
return timesBonked; // thanks for the correction, Unihedron
}
...
那么我很可能不希望其他代码插入时代,所以我不会给它一个二传手。因此,我想在构造函数中将timesBonked设置为某个初始值,以及该值是否是我选择的值或者调用代码选择的内容取决于我们尝试做什么。
对第二个问题:再次依赖。
答案 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来设置值。或者你可以有一个参数构造函数并在初始化点传递值。或者,如果您想要初始化,甚至可以拥有固定值。完全取决于您决定什么是最适合您的方法。