如何从一个类访问另一个对象的方法?

时间:2020-08-23 23:05:47

标签: inheritance polymorphism

我是面向对象的新手,我认为这是我尝试使用多态性并且也很努力地做到这一点,但是我需要帮助。我有我的DSAQueue类,该类应该构造一个Queue,但是它是由数组制成的。但是,我还有一个名为ShufflingQueue的类,该类负责将数组的所有元素向前和向后拖曳。从本质上来说,我该如何制作DSAQueue的对象并构造队列,并使用ShufflingQueue类中的方法?

public class DSAQueue
{
    public static int DEFAULT_CAPACITY = 100;

    //Classfields
    Object[] queue = null;
    int count;
  
    //default constructor 
    public DSAQueue()
    {
        queue = new Object[DEFAULT_CAPACITY];
        count = 0;
    }
}
public class ShufflingQueue extends DSAQueue
{
    public void enqueue(int value)
    {
        queue[count] = value;
        count++;
    }
}
    

public static void main(String[] args)
{

    DSAQueue queue = new ShufflingQueue();

    //Declare DSAqueues 
    queue = new DSAQueue();

    //Fill the second queue up
    for (int i = 0; i < 40; i++)
    {
        queue.enqueue(2 * i + (i / 4));
    }
}

1 个答案:

答案 0 :(得分:0)

能否请您详细说明您要完成的工作?如果我理解正确,您想运行DSAQueue类的构造函数,然后用ShufflingQueue的enqueue方法填充队列对象吗?如果是这样,那么您只需切换这两行即可:

DSAQueue queue = new ShufflingQueue();
//Declare DSAqueues
queue = new DSAQueue();

有了这个:

ShufflingQueue queue = new ShufflingQueue();

因为,如果您在基类构造函数中没有参数,则它将自动运行。如果您有一个带有参数的构造函数,则需要从派生类构造函数调用super()方法并传入参数。