老师您好,问题如下

来源:2-5 使用自定义类测试我们的算法

慕容9054781

2020-07-23 13:53:53

this. getClass()==obj. getClass()和obj instanceof Student 有什么区别?

写回答

1回答

liuyubobobo

2020-07-23

在我们的例子中,如下代码:

if(this.getClass() != student.getClass())
    return false;


改成这样也是可以的:

if(!(student instanceof Student))
    return false;


二者的区别在于,使用 this.getClass() == student.getClass(),需要保证两个类严格是相同的类型,才能返回 true;


但是,使用 student instanceof Student,student 不一定是 Student 类的对象,可以是 Student 的子类对象,也会返回 true。有的时候,在逻辑搭建中,我们可能希望判断对象是这样的子类关系的时候,只要某些成员变量是等的,结果也是相等的。


因为在我们这个课程的代码中,不存在这样的继承结构,所以我们使用对 getClass 的判断就好了:)


继续加油!:)

7

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2603 学习 · 1086 问题

查看课程