Java關於Object類中equal方法的理解

話很少說,先上例題this

 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 }

答案:truespa

 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 }

答案:falsecode

 

看到這裏,小朋友,你是否有不少問好?  固然,別慌,看我下面的講述:blog

(你先要明白,父類不能直接調用子類的方法的!固然強制暴力轉換另說)ci

首先,你看這個代碼,Object circle1 = new Circle();  這說明circle1聲明爲Object型引用變量,因此是Circle的父類變量, 因此在第七行調用的時候調用的是Object類的equal!!!class

因此circle1 和 circle2 固然是倆個不一樣的引用類型變量,因此返回值固然是false了!變量

還有,你要明白,第一個代碼中的equal只是對父類Object類中equal方法的重載!!!並非重寫,而第二個代碼纔是重寫!!!到這裏,你是否是就豁然開朗了呢?引用

 

 

若是還不明白,歡迎私信博主,或在評論區留言!方法

相關文章
相關標籤/搜索