Java-java抽象类数组问题如何存储子类
都知道Java抽象类不能实例化么,例如:abstract Fruit是一个抽象类,底下有apple和bananer两个继承Fruit类,Fruit f = new Fruit()是错的,但是Fruit[] f = new Fruit[10];这就是对的了,我大致明白一点,是数组对象,不过不太理解的是:为什么这个对象数组可以存储他的子类??就像f[0] = new apple();一样,我实在不是很明白,因为我一直用C/C++比较多,所以能不能给我讲下他这个在内存中如何存储的? 不然我想不通啊!!!非常非常感谢帮忙解答!
Best Wishes!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个叫上转型~~大学里是这样学的~
引用百度回答:向上转型是用父类的引用指向子类的对象。即方法区中存放的是父类的说明,但堆中实际存储的是子类的对象。而父类创建的对象方法区中是父类的说明,堆中存储的是父类的对象。
其实这个上转型我们经常用到的,比如List,我们一般用的是List list=new ArrayList();
在JAVA中,通过new创建的对象存储在“堆”中。按你上面所说的,你应该了解一下java的三大特性之一“多态”,abstract class Animal{} class Dog extends Animal{} 这里 Animal就是Dog的父类,一个类继承了一个抽象类, 可以声明父类类型子类对象,即 Animal dog = new Dog()。另外在java中,所有类的父类是Object类,Object obj = new Dog();
没有玩过C 不了解C中是怎么弄得,建议你多了解一下java基础。