黑马程序员技术交流社区
标题:
关于对象的引用-疑惑
[打印本页]
作者:
熊攀
时间:
2013-3-28 19:38
标题:
关于对象的引用-疑惑
本帖最后由 熊攀 于 2013-3-28 22:02 编辑
class car
{
String name="无名汽车";
}
class Driver
{
String name;
int color;
Car car; 1
}
public class person
{ public static void main(String [] args)
{ Driver driver=new Driver(); 2
driver.car=new Car(); 3
s.o.p(driver.car.name);
}
}
---------------------------------------------------
我想问下,3这里, "driver.car " 这里 driver.car是给这个Driver类的对象的car赋值,这里面的car是对象drvier的属性, 我就是闹不明白了, driver.car=new car(); 这句话为什么可以成立, 第一,我理解 driver.car 就是对象里面的car的值; 第二,就算, car=new car(); 也只是类里面属性car才能实例创造对象,我觉得对象driver里面的car 并不可以这样写吧, 好吧,不知道写的大家看的懂不,精简就是 diver.car=new car(); 不懂这个是什么意思.
前者是个值,后者是new对象。
坐等楼下解答.
作者:
何红卫
时间:
2013-3-28 20:26
首先你要明白,类Driver里面的car是一个变量,还是引用类型的,这个类型还是Car类型。然后你任何一个实例化的对象,如你这个driver,都可以点出来,如driver.car。driver.car和任何一个引用变量没什么不同,由于是一个引用类型,所以使用前必须实例化,你这个driver.car的类型是Car,所以要这样driver.car=new car(); 你把driver.car当成一个普通的引用的类型就可以了,前面多个driver只不过是因为你把这个car交给driver管理了,但car依然还是car,本质没有变。你要理解为什么要用类,为什么有类这个东西,只不过方便我们管理变量和方法罢了,如果要控制car这个变量的使用范围,所以要使用不同修饰符,好好理解类的概念。
作者:
刘胜寒
时间:
2013-3-28 20:41
driver.car=new car();这句话必须可以成立,你实例化Driver类,而你的driver.car=null;如果 driver.car=new Car(); 你不写的话,你认为你的sor()打印的出来是什么呢?试一下。“前者是个值,后者是new对象。”前者不是值,如果前者是值了那么 你能解释一下 int a = 4; a是什么吗??
作者:
小黑黑
时间:
2013-3-28 20:44
其实你已经说出来了啊,driver.car和Car car其实就是相等的,你用driver.car=new Car();就相当于是Car car=new car(); ,这是没问题的。
其实,在你创建Driver driver=new Driver();的时候,是将这个Driver类进行了加载,这时候,已经在栈内存中存在了Driver中的三个引用型变量;当调用driver.car的时候,就是再使用Driver中的car这个属性,那么你可以将new Car()赋值给这个属性,即这个变量。
看图吧:
未命名.PNG
(17.9 KB, 下载次数: 12)
下载附件
2013-3-28 20:44 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2