A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lizhi 中级黑马   /  2015-5-24 10:24  /  911 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Animal a = new Cat(); 像这样子的语句,Cat是Animal的子类,a不能调用cat类里面特有的方法和属性,a只能看到cat从Animal继承过去的方法和属性,a在编译的时候,只能调用Animal里面的方法和属性,而不能调用Cat的方法和属性。  要注意的是,这样写Animal a = new Cat(); 后面的Cat必须继承Animal类,为了出现多态,Cat类中必须重写Animal的方法。所谓重写,就是要有和父类Animal中有一模一样的方法。  编译的时候,a调用的是自己的方法,我们可以预测结果,但是运行的时候,却出现了不同的结果,因为他这个时候调用的是Cat的方法,这就是多态。  多态呢,很简单,面向对象吗,动物是总类,他又自己特定方法,继承与他的其他动物也有这个特定方法,但是他们方法结果不一样的。  多态,也仅仅是指类的方法,与属性没有任何关系。  Animal a = new Cat(); a这个引用变量指向了Cat这个对象。

评分

参与人数 1黑马币 +10 收起 理由
宸宸 + 10 淡定

查看全部评分

16 个回复

倒序浏览
不错,赞一个
回复 使用道具 举报
啊 应该可以调用cat的方法吧,cat 重写了 animal的方法,创建的对象a是cat的对象吧 , 我有点糊涂了,不知道说的对不对。!
回复 使用道具 举报
别想太多 发表于 2015-5-24 10:38
啊 应该可以调用cat的方法吧,cat 重写了 animal的方法,创建的对象a是cat的对象吧 , 我有点糊涂了,不知 ...

a是父类的引用指向子类对象,编译时看父类中有没有该调用的方法,如果有编译通过,没有就会报错,子类继承了父类肯定能调用父类中没有被私有的方法呀
回复 使用道具 举报
lizhi 发表于 2015-5-24 11:42
a是父类的引用指向子类对象,编译时看父类中有没有该调用的方法,如果有编译通过,没有就会报错,子类继 ...

a 不可以调用cat的私有的方法吗?
等下我去试试 ,现在有点忙!
回复 使用道具 举报
我觉的说白了就是子类继承父类的时候,在调用方法或属性的时候,子类如果存在被调用的属性或者方法,那么就调用子类自己的属性或者方法,若是不存在,那么就调用父类的。也就是说,如果调用的是子类重写了父类的方法时,就运行子类的方法,如果子类没有重写,那么就调用父类的该方法,这是动态绑定问题。个人愚见,仅供参考,请多多指教!
回复 使用道具 举报
lizhi 中级黑马 2015-5-24 13:12:39
7#
王小乖 发表于 2015-5-24 12:34
我觉的说白了就是子类继承父类的时候,在调用方法或属性的时候,子类如果存在被调用的属性或者方法,那么就 ...

是这样的,多注意些理解性的东西跟基础知识就会都明白的
回复 使用道具 举报
lizhi 中级黑马 2015-5-24 13:13:41
8#
zhangkai986745 发表于 2015-5-24 12:23
只要掌握父类调用子类的属性和方法就可以了

说的对,是这样的
回复 使用道具 举报
lizhi 中级黑马 2015-5-24 13:14:49
9#

嘿嘿,一起努力
回复 使用道具 举报
嗯,多态吧就是事物的多种表现形态。在Java里就是指对象在不同时刻表现出来的不同状态。你这里总结的仅仅是继承中对象所表现出来的多态性,其实方法的重载也是多态的一种体现
回复 使用道具 举报
lizhi 中级黑马 2015-5-24 18:40:46
11#
JavaStudy770 发表于 2015-5-24 14:19
嗯,多态吧就是事物的多种表现形态。在Java里就是指对象在不同时刻表现出来的不同状态。你这里总结的仅仅是 ...

恩,看来你理解的很深刻
回复 使用道具 举报
我会认真看下去.
回复 使用道具 举报
受教了~!
回复 使用道具 举报
不错!加油啊
回复 使用道具 举报
~看见你黑马币我瞬间亮了
回复 使用道具 举报
可以调用cat的方法吧,cat 重写了 animal的方法,创建的对象a是cat的对象吧
回复 使用道具 举报
分析的不错,学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马