2 dengwenxue dengwenxue 于 2014.12.08 10:44 提问

Java类中的构造函数?

class Circle
{
double radius;

Circle()
{
    radius = 1.0;
}

Circle(double newRadius)
{
    radius = newRadius;//为什么不写成 newRadius = radius?
}

}

8个回答

guwei4037
guwei4037   Ds   Rxr 2014.12.08 10:56

可以是可以,但是如果是newRadius = radius,则代表将radius的值赋给newRadius,在初始化的时候Circle circle = new Circle(11);,将radius的值(值为0)赋给newRadius,当打印circle.radius值的时候始终为0,失去了构造函数初始化变量值的意义。

qibin0506
qibin0506   2014.12.08 11:03

因为radius才是类的成员变量,newRadius只是构造方法的参数

eagleyan
eagleyan   Rxr 2014.12.08 11:02

为什么不写成 newRadius = radius?
什么意思啊?你要干嘛

q107770540
q107770540   Ds   Rxr 2014.12.08 11:05

Circle(double newRadius)
{
newRadius = radius; //写了这样,你传进来的参数还有什么用?
}

qq_22075985
qq_22075985   2014.12.08 11:07

因为你定义的全局变量是radius,而newRadius 是你构造函数的参数,所以应该是把参数的值赋给你的变量。而不是把变量的值赋给参数。再加上你的变量radius
本身你就没有给初始化的值,更不能给其他变量赋值了。radius = 1.0;只是在调用Circle()这个构造方法才会执行的。
构造

u014492098
u014492098   2014.12.08 11:33

Circle(double newRadius)
{
radius = newRadius;//为什么不写成 newRadius = radius?
} 构造函数的目的是初始化。如果你写成newRadius = radius? 那么你传的参数就没用了。那还不如直接定义个double newRadius = radius;
radius = newRadius; 这句是把你传进来的参数赋给全局变量radius .

Kelley_cfy
Kelley_cfy   2014.12.08 14:16

首先:
Java 里面
double A;
double B = 1;
A = B; 的意思是将B赋值给A,就是说A就变成了1
然后: 构造函数的目的是创建一个当前类的对象,当前类的对象的成员变量可能需要初始化
最后:
Circle()
{
radius = 1.0;
}
Circle(double newRadius)
{
radius = newRadius;//为什么不写成 newRadius = radius?
}
都是在将成员变量radius 进行初始化操作;

caozhy
caozhy   Ds   Rxr 2014.12.08 15:23

没有意义,参数是外面传进来的,你改变它没有人知道,也不会对代码起任何作用。

好比你为什么要听收音机。难道你不能对着收音机说话么?因为收音机就是让你听的,你对它说话没人理睬你。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!