一个实例变量在Java中,不像C++初始值,我们可以在其声明中的字段提供初始值:在Java
public class BedAndBreakfast {
public int capacity = 10; //initialize to 10
private boolean full = false; //initialize to false
}
为什么有必要让这虽然可能在构造函数中做得更清楚了吗?
一个实例变量在Java中,不像C++初始值,我们可以在其声明中的字段提供初始值:在Java
public class BedAndBreakfast {
public int capacity = 10; //initialize to 10
private boolean full = false; //initialize to false
}
为什么有必要让这虽然可能在构造函数中做得更清楚了吗?
如果您使用属性定义默认值,则会更清楚。如果你有多个构造函数,你将不得不在每个构造函数中定义这个丑陋的值。
最终,编译器将这些值放在每个构造函数中,所以最终结果是相同的。这种方式更具可读性且易于支持。
更新:由于BalusC在他的评论中指出的那样,你可以使用一个初始化块,它是由编译器再次追加到每个构造函数:
{
var1 = 10;
var2 = false;
}
或者,您可以使用初始化块来做到这一点,以便您不需要在所有构造函数中复制它。 – BalusC 2010-01-28 12:04:43
为什么有必要让这同时可以在构造函数中更清晰地完成?
这是一个非常主观的陈述。 Java开发人员显然感觉不同(就像我一样)。
许多人认为这种方式更清晰,价值与声明一起。
另外,顺序也不同,因为这些赋值将在构造函数开始之前进行(除了特殊的第一个构造函数行,当然)。
要添加什么其他张贴写了...... 考虑到C++也允许指定某些变量的值在线:
const unsigned MAX_SPEED = 85;
在Java中,并行是一个静态最终变量:
static final int MAX_SPEED = 85;
当然,即使是static final
变量的值可以被分配单独的从他们的声明:
static final int MAX_SPEED;
static {
MAX_SPEED = 85;
}
但是我的观点是,一旦声明中允许某些类型的变量赋值,为什么不允许所有(从语言设计的角度来看)?
如何在构造函数中完成“更清晰”? – 2010-01-28 12:16:22