黑马程序员技术交流社区

标题: 今天学习的问题 [打印本页]

作者: sunchuan    时间: 2016-5-7 23:15
标题: 今天学习的问题
public boolean equals(Object d)
                person p = (person)d;//我传进来的就是子类的对象p2为什么还要强转呢?
                return this.name.equals(p.name) && this.age == p.age;
        }


作者: SilentMax    时间: 2016-5-8 00:02
表示还没有学到
作者: z736886202    时间: 2016-5-8 00:36
发这个表示今天没学好啊..........在复习一下吧 有讲到的  我自己能搞懂   但是给你解释不了  自己的理解
作者: xiaochenu    时间: 2016-5-8 08:20
自动类型提升为object了
作者: Love丶cd    时间: 2016-5-8 09:46
本帖最后由 Love丶cd 于 2016-5-8 09:48 编辑

因为方法定义的传入的参数类型是Object,你传入P2相当于Object d=P2,P2=new Person()。此时P2自动转型为了Object类。所以当你Person p=d时。d是父类(Object)的引用,要转换为person子类,需要进行强制类型转换。即Person p=(Person)d;

作者: 吖玮    时间: 2016-5-8 09:51
你看一下你传进来的参数类型呀
作者: 小红花    时间: 2016-5-8 10:40
Love丶cd 发表于 2016-5-8 09:46
因为方法定义的传入的参数类型是Object,你传入P2相当于Object d=P2,P2=new Person()。此时P2自动转型为 ...

对的。。。。
作者: 艺高人胆大    时间: 2016-5-8 12:11
他是属于父类类型的!!!!!!!!!!
作者: sunchuan    时间: 2016-5-8 20:39
问题解决了
作者: 小小M    时间: 2016-5-8 20:49
你这是学习的第几天的???
作者: 冯领峰    时间: 2016-5-8 21:04
父类不能访问子类特有的方法和属性,要想使用就要向下转型
作者: 番茄君    时间: 2016-5-8 21:33
你要调用name和age属性,Object类里面并没有,只是他的子类中定义了,你要用就要向下转啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2