public class Test7 {public static void main(String[]args){Test test1 = new Test("aa");Object obj = new Test("aa");System.out.println(test1.equals(obj));}}class Test{private String value;public Test(String v){value = v;}public boolean equals(Test o){if(o == this){return true;}if(o instanceof Test){Test test = (Test)o;return value.equals(test.value);}return false;}}为何test.equals(obj)调用的是Object的equals方法,谢谢
2 回答

慕森王
TA贡献1777条经验 获得超3个赞
原因在于你类Test定义的equals方法参数是Test类型的 而Test继承自Object Object本身就有一个equals方法,他的参数是Object类型的
也就是说你的Test实际上有两个equals方法,一个是参数为Test类型的 一个是为Object类型的.
在你的例子中obj虽然实际类型是Test 但是声明类型为Object 所以在调用test.equels方法时 实际上是匹配的Object上的那个equals方法而不是Test的. 明白了么 骚年
添加回答
举报
0/150
提交
取消