import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
/**
* CustomHashSet.java
*/
class CustomHashSet<E> extends HashSet<E> {
private int addCount = 0;
public CustomHashSet() {
}
public CustomHashSet(int initNum, float factorNum) {
super(initNum, factorNum);
}
@Override
public boolean add(E e) {
addCount++;
return super.add(e);
}
@Override
public boolean addAll(Collection<? extends E> c) {
addCount += c.size();
return super.addAll(c);
}
public int getAddCount() {
return addCount;
}
}
/**
* Test.java
*/
public class Test {
public static void main(String[] args) {
CustomHashSet<String> chs = new CustomHashSet<String>();
chs.addAll(Arrays.asList("JAVA", "IS", "DIFFICULT"));
System.out.println(chs.getAddCount());
//SuperClass sc = new SuperClass();
//sc.pathMethod();
}
}
AbstractCollection 의 addAll에서 add를 실행하는데 왜 CustomHashSet 의 add가 실행되는거?
AbstractCollection 에도 add가 있자나
너무 늦은 시간이라 아무도 없니
AbstarctCollection이 없는데
AbstarctCollection은 jdk에 있단다
AbstractCollection > HashSet > CustomHashSet 인거임? Java니까 자동으로 오버라이딩 돼서 CustomHashSet의 add가 호출되겠네.