黑马程序员技术交流社区
标题:
一个构造方法的小问题
[打印本页]
作者:
宋旭东
时间:
2013-7-4 16:59
标题:
一个构造方法的小问题
public class Car{
private String color;
private String num;
Car(){
int num=4;
String color="red";
}
public static void main(String args[]){
Car ca=new Car();
run(ca);
}
static void run(Car a){
System.out.print(a.num+","+a.color);
}
}
难道不是在创建对象时调用其对应得构造方法初始化值吗?上面程序不知道在创建对象时为什么没有初始化值?求解?
作者:
mo﹎雲℡
时间:
2013-7-4 20:25
我来回答你的问题。
首先你定义私有对象是:2.private String color;
3.private String num;
然后你的构造方法是:4.Car(){
5. int num=4;
6. String color="red";
7.}
你的问题:1,构造方法中你又重新定义了num和color两个属性值。和你前面的定义私有对象重复了。
2,你的静态方法:12.static void run(Car a){
13.System.out.print(a.num+","+a.color);
14.}
调用的是ca类中的私有对象。你的构造方法没有初始化里面的值。所以结果你: 0,null
改进的代码:
public class Car {
private String color;
private int num;
Car(){
num = 4;
color = "red";
}
static void run(Car a){
System.out.println(a.num+","+a.color);
}
public static void main(String[] args) {
Car ca = new Car();
run(ca);
}
}
复制代码
作者:
王洪波
时间:
2013-7-4 20:38
public class Car
{
private String color;
private String num;
Car()
{
/*
int num = 4;//这里的num是局部变量,而非你定义的成员变量,其作用域范围只是在大括号内,出了大括号便失效
String color = "red";//理由同上
*/
//改为:
this.num = "4";
this.color = "red";
}
public static void main(String args[])
{
Car ca = new Car();
run(ca);
}
static void run(Car a)
{
System.out.print(a.num + "," + a.color);
}
}
复制代码
作者:
孙四有
时间:
2013-7-7 00:47
2:写成private int num;你试试。12:void run()写在class Car 里。不需要static。建议先把顺序写成类--属性--方法--主函数--调用类方法。你再看看
作者:
在乎..
时间:
2013-7-11 19:40
Car(){
int num=4;
String color="red";
}
首先1.private String num 写错了吧,应该为int ;
2.这里定义与类相同局部变量,是名字相同而已,地址改变了,如果要引用本类的是
this.num = 4;
this.color = "red";
才正确。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2