使用我的类中的方法到Java

时间:2017-11-20 12:46:49

标签: java data-structures

假设我有两个列表类,一个是双队列列表,另一个是FIFO列表。这两个类有自己的que / deque / set / get方法,但有没有办法可以使用FIFO类中的方法同时使用FIFO对象和双队列?

class FIFOque {
public void put(object ob){//puts an item in the top of the queue }
public object remove(object ob){//removes the object from the top of the queue}
}

class DoubleQueueList{
public void DoubleFrontPut(object ob){//puts an item in the front of the queue }
public void DoubleBackPut(object ob){//puts an item in the back of the queue }
public object removeFront{//removes the object from the front of the queue}
public object removeBack{//removes the object from the back of the queue}
}

我的问题是,如果有办法可以使用同时放置的方法

FIFOque and a DoubleQueueList object, for example :
FIFOque ob1=new FIFOque();
DoubleQueueList ob2=new DoubleQueueList(); 

ob1.put(object ob);//puts ob in the top of the queue
//this is what I want to know if it is possible
ob2.put(object ob);//puts the ob item in front/back of the DoubleQueueList 

如果有办法使用FIFO类的方法将对象放到DoubleQueueList的前面/后面

2 个答案:

答案 0 :(得分:0)

编写一个界面。顾名思义它只提供常用功能的界面。在您的方法中,您可以替换所有用途,例如FIFO使用界面,然后它将接受这两个实现。

public interface Container {
    public void set(int i, E val);
    public E get(int i);
    // ...
}

在两个类中都继承自接口:

public class Deque implements Container {
    // ...
}

然后使用界面而不是方法中的特定实现。

public void doSmthWithAContainer(Container c) {
    E e = c.get(2);
}

答案 1 :(得分:0)

你需要做出决定:

  

//puts the ob item in front/back of the DoubleQueueList

你想把它放在前面还是后面?你必须从两者中选择一个。在您选择之后,您可以添加如下方法:

public void put(object ob){
    DoubleFrontPut(ob);
    // or
    DoubleBackPut(ob);
}

然后,您可以在put上致电DoubleQueueList

您还可以创建新接口并使两种队列类型实现它:

public interface Putable {
    void put(object ob);
}

class FIFOque implements Putable{ ...

class DoubleQueueList implements Putable{ ...

现在你可以这样做:

Putable ob1=new FIFOque();
Putable ob2=new DoubleQueueList(); 

ob1.put(obj1);
ob2.put(obj2);