Java-java抽象类数组问题如何存储子类

发布于 2016-11-26 00:28:21 字数 287 浏览 1454 评论 2

都知道Java抽象类不能实例化么,例如:abstract Fruit是一个抽象类,底下有apple和bananer两个继承Fruit类,Fruit f = new Fruit()是错的,但是Fruit[] f = new Fruit[10];这就是对的了,我大致明白一点,是数组对象,不过不太理解的是:为什么这个对象数组可以存储他的子类??就像f[0] = new apple();一样,我实在不是很明白,因为我一直用C/C++比较多,所以能不能给我讲下他这个在内存中如何存储的? 不然我想不通啊!!!非常非常感谢帮忙解答!
Best Wishes!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-08-02 00:29:31

这个叫上转型~~大学里是这样学的~
引用百度回答:向上转型是用父类的引用指向子类的对象。即方法区中存放的是父类的说明,但堆中实际存储的是子类的对象。而父类创建的对象方法区中是父类的说明,堆中存储的是父类的对象。
其实这个上转型我们经常用到的,比如List,我们一般用的是List list=new ArrayList();

夜无邪 2017-05-21 03:50:40

在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基础。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文