琴代语兮
2016-10-03 10:11
其实我还是没看懂为什么要重写haseCode和equals方法,这岂不是说明原生set的contains方法是无效的,不能用的,只能重写以才能用?
这个你可以这样理解 equals方法是父类里面定义的 我们所写的子类都会继承他,但是父类里面的equals并不知道你子类中的equals具体怎么判断的,就像前面我们学的继承一样,我们定义了一个动物类 ,动物类里面有say(){System.out.println("动物会叫");}这个方法,他只是说出了一个动物会叫的事实,但是具体继承他的动物,比如狗继承了他 狗的方法 应该重写他say(){System.out.println(狗汪汪叫);} 而不是输出从父类中继承过来的say方法输出,动物会叫,这样不合理,我们重写是为了更适合现在的需求,希望对你有帮助。
不是,源生的默认比较的是两个对象的地址,也就是相当于===,判断是不是同一个对象,改进为如果两个对象的value相等,他们的比较就返回true,也就相等。
Java入门第三季
409792 学习 · 4340 问题
相似问题