判断obj是否为Cat类的对象

判断obj是否为Cat类的对象

请问老师,obj.getclass()==Cat.class中getClass()和.class都是什么意思?判断obj是否为Cat类的对象有什么必要的意义呢?为什么要将obj强制转换为Cat类的对象呢?

正在回答 回答被采纳积分+1

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

2回答
好帮手慕小班 2019-05-21 15:51:29

同学的说法是正确的哦!obj instanceof Cat同样是判断obj是否是Cat类型的对象实例哦!

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

好帮手慕珊 2019-05-19 17:41:06

    你好!使用.class用于获取类型类,比如有一个类Fruits,将Fruits.class输出,得到的如下所示:可以看出是类的信息。Cat.class也是同样的道理。

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

    判断obj是否为Cat类型很有必要,因为如果obj不是Cat类型,进行强制类型转换后,编译不会出错,但运行时会报错。这里也是多一份保障,如果obj不是Cat类的对象,执行下面的代码也没有什么意义了,直接返回false就可以了。

     至于为什么要强转,父类的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,父类引用是无法调用的;因此,如果某个方法是子类中有,而父类没有的,不强转直接调用会报错。

   如下代码所示解释了这个问题,可以看到在CatTest类中,animal直接调用method2()方法是报错的,而经过强转后的cat是可以调用method2()方法的。

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

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

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

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

  • onjuju #1
    老师, 请问这里判断obj是否是Cat类型这条语句, 可以使用obj instanceof Cat来代替吗?
    2019-05-21 15:29:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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