为了账号安全,请及时绑定邮箱和手机立即绑定

重写equals方法的问题

运行到Dog other = (Dog) obj ;这里,老师说“运行到这里,显然两个对象的类型是相同的,那么我们把另一个对象再传换成Dog类型”既然已经是类型相同的,为什么还要转换成Dog类型呢?

正在回答

4 回答

if (getClass() != obj.getClass())

            return false;

        Dog other = (Dog) obj;


这句话,能执行到Dog other = (Dog) obj;

就说明this.getClass()==obj.getClass,说明obj也是Dog类对象,只不过是用Object类的引用指向了这个对象,所以下面要把obj的类型给向下转换 然后继续下面的比较 来比较Dog类特有的内容

1 回复 有任何疑惑可以回复我~
#1

JustV 提问者

一击の男!谢谢啦!
2015-10-02 回复 有任何疑惑可以回复我~

顺便说下 我也很喜欢一拳超人 哈哈!

2 回复 有任何疑惑可以回复我~

没看出来是哪里做了类型提升啊。。。还望指教~

@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Dog other = (Dog) obj;
		if (age != other.age)
			return false;
		return true;
	}


1 回复 有任何疑惑可以回复我~

一开始时使用父类引用指向的子类对象,虽然是子类的对象但是在定义 时把子类对象做了类型提升,提升成了父类,当你需要用到这个对象中的子类内容时,就需要把类型给调回来

1 回复 有任何疑惑可以回复我~
#1

JustV 提问者

没看出来哪里做了类型提升。。。还望指教
2015-09-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

重写equals方法的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信