【发布时间】:2012-10-24 15:35:45
【问题描述】:
我有一个问题,在尝试几个代码 sn-ps 时我遇到了一个代码
class O
{
final int i;
O()
{
i=10;
}
O(int j)// error here as THE BLANK FINAL FIELD i IS NOT INITIALIZED
{
j=20;
System.out.println(j);
}
}
class Manager3
{
public static void main(final String[] args)
{
O n1=new O();
//O n2=new O(10);
//n1.i=20;
//System.out.println(j1.i);
}
}
但是如果我用参数注释构造函数,我不会得到任何错误。
我的问题是为什么当我将构造函数都放入代码中时会出现此编译时错误,以及为什么在删除参数化构造函数时没有出现任何错误。
我知道我们必须初始化我的最终变量,但我在构造函数中初始化它,因此如果我编写这段代码:-
class O
{
final int i;
O()
{
i=10;
}
}
class Manager3
{
public static void main(final String[] args)
{
O n1=new O();
}
}
一切正常,代码正在编译。
我的问题是如果我引入另一个构造函数会出现什么问题。甚至错误在我写参数化缺点的那一行。
我了解 JAVA,但我对这段代码感到困惑。
【问题讨论】:
标签: java constructor final