如何调用实现导入接口的抽象类中的方法?

时间:2017-11-02 01:38:25

标签: java interface instance abstract

现在,我有一个班级' Bag'实现导入的界面' USet'

我的课程' Bag'如下:

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>();
}

}

我无法在我的主电话中调用我的课程或访问其中的方法。简单地说,我只想添加,删除我的Bag中的整数并创建我自己的排序方法。但是,由于这是一个抽象的接口,似乎我不能只是称之为。有工作吗?

作为参考,我导入的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();
}

1 个答案:

答案 0 :(得分: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代码甚至不是一个集合,而是一个特殊的迭代器。要使其成为集合,您可以扩展Collection接口,也可以专门设置。在你的情况下,我相信它是你想要的一套。所以你的代码应该如下所示。

包装袋;

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();
  }

}