instanceof的问题

instanceof的问题

左边是要求引用,右边实例对吧,那么不是说instanceof那节课不是说右边是左边本身类,或者右边是左边父类情况下的时候可以符合条件吗,而这个左边是父类引用而右边确是子类,😳

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,

1、obj intanceof Cat只是用来判断obj是否是Cat的实例对象或者Cat子类的实例对象,与向上转型无关。


1、首先obj是一个Animal的引用,指向Cat的对象。


2、在调用feed方法时,经过了向上转型。feed的方法参数在这里不光可以是Cat对象,也可以是Animal子类的对象,这是方法参数是Animal的意义。

http://img1.sycdn.imooc.com//climg/5d2b03f20001063c04810185.jpg


3、在调用时,经过向上转型,所以,在方法中,需要进行向下转型。


如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • n_nmingzibuhaoqi 提问者 #1
    我明白假如Animal obj=new Cat(); Animal obj是Animal的引用 new Cat();是Cat的实例也就是对象 我就想按你上面说的往下顺一下 A instanceof B ,返回值为boolean类型,用来判断A是否是B的实例对象或者B子类的实例对象。 如果是则返回true,否则返回false。这是您回复我的 请用您这个解释一下obj instanceof Cat 我的主要问题就是判断语句前是否进行了向上转型 Animal obj =new Cat();
    2019-07-14 18:46:08
吃吃吃鱼的猫 2019-07-14 17:22:01

同学你好,

instanceof 这个关键字的用法是:

A instanceof B ,返回值为boolean类型,用来判断A是否是B的实例对象或者B子类的实例对象。

如果是则返回true,否则返回false。

如:

Person p = new Person();
Man m = new Man(); //Man是Person的子类
Animal a = new Animal();
m instanceof Man //返回true
m instanceof Animal//返回false
m instanceof Person//返回true
Animal obj=new Cat();

就是向上转型哦~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 n_nmingzibuhaoqi #1
    1if(obj intanceof Cat) obj是Cat的实例对象或者是Cat子类的实例对象吗 他不是Animal 实例的一个对象吗? 或者说在方法中把one通过参数列表Animal 传给方法吗,然后传参可以是Animal类型的对象或者是子类的对象?那么如果是直接传参过来下面的向下强制转换是否还有必要,本身就是Cat类型的对象了嘛 2或者说在 if(obj intanceof Cat) 之前就已经进行了向上转型 Animal obj=new Cat(); 所以才会有 Cat temp=(Cat)obj; 不然的话没有向上强转这步又有何意义
    2019-07-14 17:40:35
提问者 n_nmingzibuhaoqi 2019-07-14 16:40:43

这个应该没有向上转型这步操作吧,如果有的话倒是可以解释了,就是这个Animal obj=new Cat();

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师