equals方法真心看不懂 哪位好心人讲解下
方法的()里的实参为什么是Object obj呀 Object是类型吗?实参不是具体的值吗
第三个if中getcalss()!=obj。getcalss() 左边是得到的类对象吗 右边呢?
最后dog other=(dog)obj视频说是转换类型 搞不懂 前面没见过这个呀
方法的()里的实参为什么是Object obj呀 Object是类型吗?实参不是具体的值吗
第三个if中getcalss()!=obj。getcalss() 左边是得到的类对象吗 右边呢?
最后dog other=(dog)obj视频说是转换类型 搞不懂 前面没见过这个呀
2016-10-10
逐一作答了
Object是java中所有类的父类,所以()中的Object obj的意思就是传入一个Object类型的obj引用,这里是形参,但你使用的时候肯定传入的是具体的对象变量了啊
getClass()是反射方法,功能是得到当前对象的类,这行代码的意思就是判断当前对象的类是否与传入的obj对象引用同属一个类型,如果不是就没有必要比较其成员变量属性值了,直接返回false;
Dog other = (Dog)obj;是属于强制类型转换,因为本方法中传入的是Object对象引用,但我们比较的是Dog对象而且我们静态getClass方法已经可以确认该obj引用对象实际上是一个Dog对象,所以这时候为了比较对象之间的成员变量属性值是否相同(封装性的原因,父类对象引用无法使用子类对象的属性),我们就要将传入的obj进行强制类型转换,即向下转型为Dog对象
不用太纠结这些,弄明白equals方法的原理就行了,反射以后会慢慢学到的
默认的Object的equals方法的实现是比较当前对象的引用和要比较的引用是否指向同一个对象,我们平时使用的时候经常需要重写equals方法使它能比较对象的“值”是否相等,明白这一点就可以向下进行了!
纯手打,望采纳
举报