在Java中类型如何与对象产生关系

来源:百度知道 编辑:UC知道 时间:2024/06/04 11:46:29
之所以会这么问是因为在向上转型中是将子类对象赋给父类的一个对象的引用,那这样就算把子类对象转成父类对象了吗?还是因为工作区的原因呢?Java在编译时是如何实现的呢?

将子类对象赋给父类对象后父类实际上就已经成了子类了,虽然它还是以父类的类型显示,但实际上已经变成子类了,在进行赋值或传参时,JAVA还是会自动识别为父类,但如果需要使用子类特有的方法属性时则必须加上强制类型转换为子类了,这个是所有面向对象语言的共性,并非JAVA独有,更并非JAVA工作区造成的,JAVA在对象赋值时是采用动态分配赋值的,将一个对象赋值为另一个对象只是动态地将引用指向的位置改变了而已(原对象将被垃圾回收)

举个例子吧:有父类A和子类B,先执行A a=new A();这时父类是他自己的对象,B b=new B();这时子类也是他自己的对象,此时如果a=b;这是父类对象a就已经代表子类对象b了,此时的a已经不再是原来的a了,原来的a已经被抛弃将被垃圾回收,而a和b都指向的是同一个对象空间b。这一切都是程序运行时执行的,并非编译时执行的,这就是动态分配