java中新建对象的问题

本人刚学Java不久,有个问题一直不清楚,比如有几个类,一个父类Fruit,子类有Apple,Pear,Watermelon。那么Fruita=newFruit,Frui... 本人刚学Java不久,有个问题一直不清楚,比如有几个类,一个父类Fruit,子类有Apple,Pear,Watermelon。那么Fruit a = new Fruit ,Fruit b = new Apple ,Apple c = new Apple ,这三个对象a,b,c有什么区别? 展开
 我来答
zh857872
推荐于2016-08-17 · TA获得超过1415个赞
知道小有建树答主
回答量:426
采纳率:100%
帮助的人:303万
展开全部
在Java中,多态的体现有两种方式,一是体现在父子类中,二是体现中方法的重载中。
上面的问题,是Java典型的一种多态的体现。
三个对象的区别如下:
1、a对象是直接通过Fruit父类自身实例化的,实例a时只需调绝枝用一次Fruit的无参构造函数,a对象能够访问Fruit类中的所有成员属性及成员函数,不能访问子类的。
2、b对象是通过子类Apple实例化的,这就是多态的体现,通过子类实例化父类,并向上转型,实例b对象时,调用了两次构造方法,首先是调用父类Fruit的构造方法,再调用子类Apple的构造方法。b对象与上面的a对象一样,能够访问Fruit类中的所有扒宏此成员属性及成员函数,不能访问子类的。
3、c对象是Apple类直接实例化自身,跟b对象一样,实例时也调用了两次构造方法,先是调用父类Fruit的构造方法春迅,再调用自身的构造方法。c对象与a、b对象不一样的地方是:c对象可以访问Fruit类中的所有成员属性及成员函数及自身的成员属性与函数。

楼主可回顾下Java中类的继承与实现,多态的体现这节。

有问题欢迎提问,满意请采纳,谢谢!
追问
那在实际运用中a对象和b对象有哪些区别?我意思就是既然一个是通过Fruit自身实例化的,一个是通过子类实例化的都是只能访问父类的属性及函数,那不是都是一样的作用吗?为什么要这样分两种。还有个问题就是是不是还有个像下转型?是不是向下转型是不安全的?
追答
a和b的区别是:
1、实例a只需调用一次构造方法,而b调用两次构造方法,这点上面有提到。
2、b调用自身的方法时,如果该方法被子类覆写过,则显示的实际内容是子类中所实现的内容,这是关键点,也是多态的体现,这点a对象是没有的。
3、对的,向下转型是不安全的,向上则是安全的。

现在明白了吧。
dr...2@126.com
2015-06-13
知道答主
回答量:16
采纳率:0%
帮助的人:13.8万
展开全部
这是一个“多态”的例子,你可以网上找找有很多解释。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式