加载中...

Object

Object

构造方法

Object()

常用操作

可以被子类覆盖的方法

equals

toString

hashCode

finalize

protected方法,使用前需要覆盖

clone

多线程相关不能被覆盖

wait

notify

notifyAll

不能被覆盖

getClass

1.equals

方法的重写,当时new了dog对象

对比两个属性相同对象的时候,发现输出为flase,因为equals方法是继承的Object基类,所以为了达到我们想象的输出结果,这个方法并不合适,就需要我们重写方法。

在Dog类里,默认继承Object类,所以我们需要重写equals方法

 @Override
	//重写开始是地址值对比的equals的方法,现在开始自定义时间
    public boolean equals(Object obj) {
        //obj属于Dog的实体,就强制转换
        if(obj instanceof  Dog){
            Dog dog1 = (Dog) obj;
            if(dog1.getAge()!=this.getAge()){
                return false;
            }
            //比较第二个条件
            if(!dog1.getColor().equals(this.getColor())){
                return  false;
            }
            //比较第二个条件
            if(!dog1.getName().equals(this.getName())){
                return  false;
            }
            return true;

        }
        return false;
    }
}

2.toString()

我们发现开始toString()打印的时候,输出的是地址值。

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

note.Ojb.Dog@27ddd392
true
note.Ojb.Dog@27ddd392

和我们想象的结果不一样。

那么如上操作

@Override
public String toString() {
    return "Dog{" +
            "name='" + name + '\'' +
            ", age=" + age +
            ", color='" + color + '\'' +
            '}';
}

Dog{name='小黑', age=4, color='black'}
true
Dog{name='小黑', age=4, color='black'}

posted @ 2022-10-10 18:51  说句话吧  阅读(19)  评论(0)    收藏  举报