请问一下下边的java代码,我有点不明白的是equals方法里的else判断,既然obj 已经instanceof Demo了,那

请问一下下边的java代码,我有点不明白的是equals方法里的else判断,既然obj已经instanceofDemo了,那为何还用Demod=(Demo)obj;进行... 请问一下下边的java代码,我有点不明白的是equals方法里的else判断,既然obj 已经instanceof Demo了,那 为何还用Demo d=(Demo)obj;进行强转成Demo类型,直接省掉这一句不行吗?
class Demo{
private int number;

public Demo(int number) {
super();
this.number = number;
}
public boolean equals(Object obj){
if(!(obj instanceof Demo)){
return false;
}
else{
Demo d=(Demo)obj;
return this.number==d.number;
}
}

}
另外我想请教一下:如果Demo有父类的话,是不是父类也instanceof Demo?
展开
 我来答
pengzhi143neng
2013-06-14 · TA获得超过454个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:189万
展开全部
instanceof是这样用的----------------对象名 instanceof 类名,是判断某个对象是否是某个类的实例。
父类的引用指向子类的对象时不需要显式转换,因为子类就是父类。当父类的引用指向子类的对象时,并且你想用子类的某些特有方法时,需要强转成子类的对象,然后才能使用自己特有的方法。类型向上是自动提升的,其实相当于一个隐式转换,你也可以加上强制转化,不过可以省略而已,向下转换必须要显式转换。
x369201170
2013-06-13 · TA获得超过426个赞
知道小有建树答主
回答量:570
采纳率:0%
帮助的人:365万
展开全部
不能,因为obj可以实际类型是Demo,但是现在他是Object类。object类是无法获取Demo里的属性与方法。所以必须强行转换后才能获取类中的属性和方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式