在 Java 第 16 条中生效:
幸运的是,有一种方法可以更早地避免所有问题。不要扩展现有的类,而是为您的新类提供一个引用现有类的私有字段。
然后我得到了详细解释的代码:
public class InstrumentedSet<E> extends FowardingSet<E> {
private int addCount = 0;
public InstrumentedSet(Set<E> s) {
super(s);
}
public boolean add(E e) {
addCount++;
super.add(e);
}
...
public int getCount() {
return addCount;
}
}
public class ForwardingSet<E> implements Set<E> {
private final Set<E> s;
public ForwardingSet(Set<E> s) {
this.s = s;
}
public boolean add(E e) {
return s.add(e);
}
...
}
我感到困惑:私人参考在哪里?而且我明显看到了extends关键字,那么代码中的组合在哪里?