49.Object 类对象分析

本文探讨了在Java中如何正确重写Object类的equals()方法,特别是涉及到类型转换和对象比较时的细节。通过一个Panda类的例子,展示了在equals()方法中需要将Object类型的参数强转为Panda类型以访问其成员变量,并强调了父类引用不能直接操作子类特有成员的规则。同时,文章还提到了重写hashCode()方法的重要性。
摘要由CSDN通过智能技术生成
public void test(Object obj){} 

Object类是java中所有类的基类,也就是说Object引用数据类型变量obj可以指向任何一个类对象;

class Panda{
    //构造方法
    public Panda() {}
    public Panda(String name){}
    //成员变量
    private String name;
    //成员方法
    public void test(){}
    //重写equals() 方法
    //这里的equals()方法 参数是 Object o
    // o 里面保存的是Object对象还是Panda对象??? ———— Panda对象!
    // o 对外是什么类型 ??? ————Object类型
    // Object类型不能直接操作Panda的成员变量;
    // 【父类的引用不能直接操作子类的特有成员变量】只能操作父类中存在的;
    // 所以这里需要强转;强转后的 panda 就是Panda类型了,就可以使用Panda类型了;
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        //强转!!!
        Panda panda = (Panda) o;
        return name.equals(panda.name);
    }
    //重写hashCode方法
    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}
public class Test{
    //构造方法
    public Test(){}
    public static void main(String[] args) {
        Panda p1 = new Panda("小哈");
        Panda p2 = new Panda("小哈");
        p1.equals(p2);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值