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方法的重载!!!并不是重写,而第二个代码才是重写!!!到这里,你是不是就豁然开朗了呢?

 

 

如果还不明白,欢迎私信博主,或在评论区留言!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值