看了半天还是觉得有错
class Student{
int stuNO;
String name;
Family family;
String school;
}
class Family{
int members;
String income;
}
其中对Student进行初始化
Student stu_Mike=new Student();
然后在书上有发现对Family类型的family进行了初始化
stu_Mike.family=new family(); //这句初始化正确??怎么和概念给出的不一样呢??
不是要用Family family=new Family();么??
class Student{
int stuNO;
String name;
Family family;
String school;
}
class Family{
int members;
String income;
}
其中对Student进行初始化
Student stu_Mike=new Student();
然后在书上有发现对Family类型的family进行了初始化
stu_Mike.family=new family(); //这句初始化正确??怎么和概念给出的不一样呢??
不是要用Family family=new Family();么??
首先初始化的是Student类中的变量,顺序是静态变量,然后是变量。如果没有给变量进行赋值的话,那么根据变量类型的不同,也会有不同的初始值。也就是说,stuNO会成为0;name=null;
family=null;
school=null;
如果你想构造student的时候想给Family进行初始化成对象的话,而不是null的话。
就要写成
class Student{
int stuNO;
String name;
Family family=new Family();
String school;
}
Family family=new Family();//这个是声明一个Family变量family,然后给变量family初始化
Student stu_Mike=new Student();//声明一个Student变量stu_Mike,然后给变量stu_Mike初始化,但是stu_Mike的成员变量family没有被初始化,所以
stu_Mike.family=new family(); //这里给stu_Mike的成员变量family初始化
Family family;
family = new Family();
和直接 实例化 Family 是一样的
是吧~~
但是问题就出在stu_Mike.family=new family(); 中的family()
family()是小写的f,而不是应该写出大写的F么??不是应该写出stu_Mike.family=new Family();才对么??
看来LZ还是没明白
Family family; //这是声明一个变量,Falily是类型,family是变量
family = new Family(); //这里是给family变量初始化,
//注意,这个和Student的family的区别
//这里的family是一个独立的变量,不属于谁
同样的
class Student{
int stuNO;
String name;
Family family; //这里也是声明一个Family类型的family变量,但是这个变量在一个Student类里面
//也就是family变量是Student类的一个成员,要使用family,不能直接用family
//要通过(Student的实例变量.family)来使用family
String school;
}Student stu_Mike = new Student(); //stu_Mike就是Student的一个实例变量
所以要使用stu_Mike的family,就要用 stu_Mike.family
所以stu_Mike的family要初始化,就要 stu_Mike.family = new Family();
stu_Mike.family = new Family(); //是把stu_Mike对象的成员变量family初始化
LZ要清楚成员变量和独立变量的使用区别
LZ还不明白我就真的无语了
是要大写的
stu_Mike.family=new Family(); //Family()而不是family()
你的理解没错