问题描述
- Java类中的构造函数?
-
class Circle
{
double radius;Circle() { radius = 1.0; } Circle(double newRadius) { radius = newRadius;//为什么不写成 newRadius = radius? }
}
解决方案
可以是可以,但是如果是newRadius = radius,则代表将radius的值赋给newRadius,在初始化的时候Circle circle = new Circle(11);,将radius的值(值为0)赋给newRadius,当打印circle.radius值的时候始终为0,失去了构造函数初始化变量值的意义。
解决方案二:
因为radius才是类的成员变量,newRadius只是构造方法的参数
解决方案三:
为什么不写成 newRadius = radius?
什么意思啊?你要干嘛
解决方案四:
Circle(double newRadius)
{
newRadius = radius; //写了这样,你传进来的参数还有什么用?
}
解决方案五:
因为你定义的全局变量是radius,而newRadius 是你构造函数的参数,所以应该是把参数的值赋给你的变量。而不是把变量的值赋给参数。再加上你的变量radius
本身你就没有给初始化的值,更不能给其他变量赋值了。radius = 1.0;只是在调用Circle()这个构造方法才会执行的。
构造
解决方案六:
Circle(double newRadius)
{
radius = newRadius;//为什么不写成 newRadius = radius?
} 构造函数的目的是初始化。如果你写成newRadius = radius? 那么你传的参数就没用了。那还不如直接定义个double newRadius = radius;
radius = newRadius; 这句是把你传进来的参数赋给全局变量radius .
解决方案七:
首先:
Java 里面
double A;
double B = 1;
A = B; 的意思是将B赋值给A,就是说A就变成了1
然后: 构造函数的目的是创建一个当前类的对象,当前类的对象的成员变量可能需要初始化
最后:
Circle()
{
radius = 1.0;
}
Circle(double newRadius)
{
radius = newRadius;//为什么不写成 newRadius = radius?
}
都是在将成员变量radius 进行初始化操作;
解决方案八:
没有意义,参数是外面传进来的,你改变它没有人知道,也不会对代码起任何作用。
好比你为什么要听收音机。难道你不能对着收音机说话么?因为收音机就是让你听的,你对它说话没人理睬你。