【发布时间】:2020-05-16 05:26:38
【问题描述】:
在下面的代码中:
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;
为什么没有抛出错误?
我会这样认为,因为我们将变量 double 的数据类型声明了两次。为什么这段代码会执行?
【问题讨论】:
-
因为无论多么不幸,只要不存在范围冲突,您就可以声明与现有变量同名的新变量。哪个不存在。您没有两次声明变量的数据类型。您正在声明两个不同的变量。此外,这将是编译错误,而不是运行时错误。
-
在你的构造函数和修改器中使用一个名为
side的变量作为参数是合法的。 -
你不是在声明一个变量的数据类型两次,你是在声明一个字段和一个局部变量,这是两个不同的东西。
标签: java class object variables types