ボブ・スミス:
以下のコードでは:
public class Square
{
private double side;
public Square(double a)
{
double side = a;
}
public double area()
{
return side * side;
}
public static void main(String[] args)
{
Square r = new Square(10.0);
System.out.println(r.area());
}
}
フィールドが宣言された場合:
private double side;
その後、コンストラクタで:
double side = a;
なぜエラーがスローされていませんか?
私たちは二重の二回、変数のデータ型を宣言しているので、私はそう思うだろう。なぜ、このコードが実行しますか?
フェデリコクレズCulloca:
二つ目は、コンストラクタにローカル変数を宣言しているため。それは(あなたがまだそこを経由してアクセスできるメンバ変数を曇らせますthis.side
)。
その変数はコンストラクタが終了するとすぐに消えてしまうように、その文脈では、その宣言は、完全に無意味です。
また、それが問題だったとしても、それはランタイムエラーをスローしません。これは、コンパイル時エラーになります。