import java.util.*;public class HashSetTest {
public static void main (String[] args) {
Set s1 = new HashSet();
Set s2 = new HashSet();

s1.add("a"); s1.add("b"); s1.add("c");
s2.add("d"); s2.add("a"); s2.add("b");

    Set s3 = new HashSet(s1);
    s3.retainAll(s2);
    
    Set s4 = new HashSet(s2);
    s4.addAll(s1);
    
    System.out.println(s3);
    System.out.println(s4);
    }
}关于这段代码中 retainAll 是Set 的方法,而Set是接口因此这个retainAll方法只有定义没有实现
而HashSet这个类看了下API没有retainAll这个方法,因此没有对Set这个retainAll重写,因此多态说不通
这样说来的话这个retainAll到底是调用哪个类的方法呢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【fdar】截止到2008-07-11 10:55:29的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:40                       每贴平均分数:20                       
    回帖的总数量:198                      得分贴总数量:123                      回帖的得分率:62%                      
    结贴的总数量:2                        结贴的总分数:40                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    hashSet 继承了 java.util.AbstractCollection,而java.util.AbstractCollection就有这个方法,所以使用的就是java.util.AbstractCollection中实现的方法
      

  3.   

    从类 java.util.AbstractCollection 继承的方法 
    addAll, containsAll, retainAll, toArray, toArray, toString 
    以上是摘自API 中java.util.HashSet 类