关于java中重写.equals()方法的问题

 if (getClass() != o.getClass()) {
            return false;
 }
       

关于if判断中的条件,等号后是o对象调用Object类中getClass()方法,而前者,是谁对Object类中的getClass()方法进行调用呢?这里为什么不需要写this.getClass()呢?

阅读 2.1k
2 个回答

是当前对象的 getClass()方法。
在当前对象内使用当前对象的方法或者属性可以忽略 this,除非有参数名重复,才需要特别指定 this

class Demo {
    private String id;
    private String name;
    
    public Demo(String id, String name){
       this.id = id; // 参数与字段名重复,所以需要指定 this
       this.name = name;
    }
    
    public Demo(String username) {
       name = username; // 这里的name 就是当前对象的name
       id = getClass().toString(); //  这里的 getClass() 也是当前对象的getClass() 方法
    }   
}

每次调用成员方法的时候都会隐式传入this对象,编译器会去给getClass() 加上this

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题