众所周知equals与==的区别在于
equals比较的是对象是否相等
源代码
public boolean equals(Object obj) {
return (this == obj);
}
==比较的是地址是否相等
但是我们运行一下下面的代码
可以看出两者的结果都是false。
为什么equls也是false呢?
这是因为equals是Object类访问public修饰符,并且我们没有重写equals,而源代码里其实是用了等号的。
重写equals之后
经过重写函数后,输出true
为什么最后输出false,因为BigCar是继承Car类的,Car类型不一定是BigCar类型的