尝试通过将参数名称保留为实例变量名称来从构造函数初始化实例变量时.我收到的输出为0.而不是传递的值.请解释一下?
public class Circle
{
int x;
int y;
int radius;
//Constructor with same parameters of field name
public Circle(int x,int y,int radius)
{
x=x;
y=y;
radius=radius;
}
//Overridden to String()
public String toString()
{
return "center("+x+" , "+y+") and radius ("+radius+")";
}
//Main method
public static void main(String[] args)
{
System.out.println(new Circle(5,5,50));
}
}
Run Code Online (Sandbox Code Playgroud)
当我将构造函数5,5,50中的值传递给构造函数的参数时.它们不应该显示相同的值.
System.out.println(new Circle(5,5,50)); //发送给构造函数的值
public Circle(int x,int y,int radius)//构造函数参数采用的值
我们知道Java是一种面向对象的语言.一切都是Java中的对象.我们也知道对象有一些东西(实例变量/字段)和做某事(方法).我们使用方法更改实例变量的状态是安全的,即; 二传手和吸气鬼.所以在构造函数中我们初始化实例变量.换句话说,构造函数正在为对象做一些事情.因此,假设构造函数是一种实用方法,就像设置值的setter一样,这是不正确的?区别在于setter甚至我们有返回类型void,在构造函数中我们没有任何返回类型.并且可以在对象上调用setter任意次数,但可以在对象的生命周期中调用构造函数一次.
java ×2