问一个父类与子类关系的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:35:41
假设有如下内容:
//类abc:
class abc{
public int a;
public String b;
}

//运行如下代码:
Object obj=new Object();
abc a=new abc();
a.a=10;
a.b="wfwfwf";
System.out.println(a.a+" "+a.b); //此句输出10 wfwfwf
obj=a; //将子类赋值给父类没有问题
abc b=(abc) obj; //将一个object类强转成子类
System.out.println(b.a+" "+b.b); //此句输出依然是10 wfwfwf

我想问的是:
当子类赋值给父类时,父类中并没有子类中的两个属性,那这两个属性放在哪里了?或是抛弃了?
然后,当将刚刚这个父类强转成子类时,这个过程是怎样的?为何子类b中会有10 wfwfwf两个值,是怎样传过来的?
望高手不惜赐教,感谢!

我想问的是:
当子类赋值给父类时,父类中并没有子类中的两个属性,那这两个属性放在哪里了?或是抛弃了?

--在子类对象的内存空间中,当被垃圾回收器回收时释放

然后,当将刚刚这个父类强转成子类时,这个过程是怎样的?为何子类b中会有10 wfwfwf两个值,是怎样传过来的?

--强制转换类似于(double)100,只是对对象的内存空间的内容做修改

object是所有类的父类.多态(如果要深入了解,最好要了解一下内存机制);
此题涉及多态,强制转换;
父类中并没有子类中的两个属性,那这两个属性放在哪里了?
父类是没有两个属性,所以你不能abc.a;abc.b;如果有你可以;
这个父类强转成子类时,这个过程是怎样的;
这个父类把带有子类对象的引用给了b;即这个b相当于是abc的对象了;
你通过了强制转换父类对象(此题的父类指向子类对象引用),b又成了abc,所以b.a;b.b;又可以输出

我不是高手,但是想发表哈意见。。。
我觉得可以这样理解。
对象a 是一张纸他上面写了他的属性和方法。
当它强转成Object的时候就是用object的这一类纸放在对象a的纸上面,把object没有的属性和方法都掩盖了。再强转回来的时候只是把object的模板拿掉而已。所以该有的方法,属性还是有。

父类的引用对象obj引用的是abc的对象a
在转换成abc类的对象是没有问题的

父类对象转子类对象 前提是,这个对象必须是子类的对象,才能转换.