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

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

  • 相关阅读:
    【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件
    二分查找
    MongoDB安装及启动
    Python文件IO(普通文件读写)
    Python面向对象--高级(二)
    Python面向对象--高级(一)
    Python类与对象--基础
    Python生成器、装饰器
    Python函数式编程
    Python函数及参数
  • 原文地址:https://www.cnblogs.com/mr-wei977955490/p/12683350.html
Copyright © 2011-2022 走看看