2017-11-02 6 views
0

は今、私は、インポートのインターフェースを実装するクラス「バッグ」を持っている「USet」インポートされたインターフェイスを実装する抽象クラス内のメソッドを呼び出す方法は?次のように

私のクラスのバッグ 'です:

package Bag; 

import java.util.Iterator; 


public class Bag implements USet<Integer>{ 

@Override 
public Iterator<Integer> iterator() { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public int size() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public boolean add(Integer x) { 
    // TODO Auto-generated method stub 
    return false; 
} 

@Override 
public Integer remove(Integer x) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public Integer find(Integer x) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void clear() { 
    // TODO Auto-generated method stub 

} 

/** 
* @param args the command line arguments 
*/ 

public static void main(String[] args) { 
    // TODO code application logic here 
    Bag<Integer> myBag=new USet<Integer>(); 
} 

} 

私はその中に私のクラスやアクセスメソッドを呼び出すことはできません。私のメイン。簡単に言えば、私はちょうどバッグに整数を追加して削除し、それらを並べ替える独自の方法を作りたいと思う。しかし、これは抽象的なインターフェイスなので、私はこれを呼び出すことはできないようです。回避策はありますか?参考のため

、私の輸入USetは次のとおりです。ここで

package Bag; 

public interface USet<T> extends Iterable<T> { 
    public int size(); 
    public boolean add(T x); 
    public T remove(T x); 
    public T find(T x); 
    public void clear(); 
} 
+0

'バッグmyBag =新しいバッグ();' – Blorgbeard

+0

@Blorgbeardうわー、それは簡単な検討USetが一般的で抽象インタフェースであるということでした気づいていませんでした。それは正しい –

答えて

0

はそれを行うコードです。私はそれが非常に簡単なので、説明の必要はないと信じています。

package Bag; 

import bag.USet; 
import java.util.Iterator; 

public class Bag implements USet<Integer> { 

    @Override 
    public Iterator<Integer> iterator() { 
    System.out.println("iterator called."); 
    return null; 
    } 

    @Override 
    public int size() { 
    System.out.println("size called."); 
    return 0; 
    } 

    @Override 
    public boolean add(Integer x) { 
    System.out.println("add called with " + x); 
    return false; 
    } 

    @Override 
    public Integer remove(Integer x) { 
    System.out.println("remove called with " + x); 
    return null; 
    } 

    @Override 
    public Integer find(Integer x) { 
    System.out.println("find called with " + x); 
    return null; 
    } 

    @Override 
    public void clear() { 
    System.out.println("clear called "); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
    // TODO code application logic here 
    Bag myBag = new Bag(); 
    myBag.add(1); 
    myBag.add(2); 
    myBag.add(3); 
    int size = myBag.size(); 
    } 

} 

Test result

NB: はあなたのUSetのコードを見てみると、私はあなたが整数の特別なセットを持っているつもり考えています。この場合、あなたのUSetのコードはコレクションではなく、特別なIteratorです。これをコレクションにするには、Collectionインタフェースを拡張するか、Setを具体的に拡張します。あなたの場合、私はあなたが望むセットを信じています。コードは以下のようになります。

パッケージ袋;

import java.util.HashSet; 

public abstract class USet2 extends HashSet<Integer> { 

} 

package bag; 
import java.util.Collection; 
import java.util.Iterator; 

public class Bag2 extends USet2 { 

    public Bag2() { 
     super(); 
    } 

    @Override 
    public int size() { 
     return super.size(); 
    } 

    @Override 
    public boolean isEmpty() { 
     return super.isEmpty(); 
    } 

    @Override 
    public boolean contains(Object o) { 
     return super.contains(o); 
    } 

    @Override 
    public Iterator<Integer> iterator() { 
     return super.iterator(); 
    } 

    @Override 
    public Object[] toArray() { 
     return super.toArray(); 
    } 

    @Override 
    public <T> T[] toArray(T[] a) { 
     return super.toArray(a); 
    } 

    @Override 
    public boolean add(Integer e) { 
     return super.add(e); 
    } 

    @Override 
    public boolean remove(Object o) { 
     return super.remove(o); 
    } 

    @Override 
    public boolean containsAll(Collection<?> c) { 
     return super.containsAll(c); 
    } 

    @Override 
    public boolean addAll(Collection<? extends Integer> c) { 
     return super.addAll(c); 
    } 

    @Override 
    public boolean removeAll(Collection<?> c) { 
     return super.removeAll(c); 
    } 

    @Override 
    public boolean retainAll(Collection<?> c) { 
     return super.retainAll(c); 
    } 

    @Override 
    public void clear() { 
     super.clear(); 
    } 

} 
関連する問題