Java关于Object类中equal方法的理解
Posted Mr__wei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java关于Object类中equal方法的理解相关的知识,希望对你有一定的参考价值。
话不多说,先上例题
1 package Ch_11; 2 3 public class Test { 4 public static void main(String[] args) { 5 Object circle1 = new Circle(); 6 Object circle2 = new Circle(); 7 System.out.println(circle1.equals(circle2)); 8 } 9 } 10 11 class Circle { 12 double radius; 13 14 public boolean equals(Object circle) { 15 return this.radius == ((Circle)circle).radius; 16 } 17 }
答案:true
1 package Ch_11; 2 3 public class Test { 4 public static void main(String[] args) { 5 Object circle1 = new Circle(); 6 Object circle2 = new Circle(); 7 System.out.println(circle1.equals(circle2)); 8 } 9 } 10 11 class Circle { 12 double radius; 13 14 public boolean equals(Circle circle) { 15 return this.radius == circle.radius; 16 } 17 }
答案:false
看到这里,小朋友,你是否有很多问好? 当然,别慌,看我下面的讲述:
(你先要明白,父类不能直接调用子类的方法的!当然强制暴力转换另说)
首先,你看这个代码,Object circle1 = new Circle(); 这说明circle1声明为Object型引用变量,所以是Circle的父类变量, 所以在第七行调用的时候调用的是Object类的equal!!!
所以circle1 和 circle2 当然是俩个不同的引用类型变量,所以返回值当然是false了!
还有,你要明白,第一个代码中的equal只是对父类Object类中equal方法的重载!!!并不是重写,而第二个代码才是重写!!!到这里,你是不是就豁然开朗了呢?
如果还不明白,欢迎私信博主,或在评论区留言!
以上是关于Java关于Object类中equal方法的理解的主要内容,如果未能解决你的问题,请参考以下文章
讲的很详细的一篇关于object equals() & hashCode() 的文章
关于JAVA核心技术(卷一)读后的思考(equals方法的讨论)