当前位置: 首页 > 知识库问答 >
问题:

从实现队列接口的列表队列中调用受保护的方法“前线”

容学林
2023-03-14

我在弄清楚如何从我的ListQueue类中调用方法“Front”时遇到了麻烦。ListQueue类实现了接口“Queue”,它也包含“Front”作为变量。该方法在Queue中是公共的,并在ListQueue中受到保护。

当我尝试使用q1和q2调用front时,无法识别该方法。我假设这是因为它是受保护的访问修饰符,因为它识别其他具有公共访问权限的方法。如果是这种情况,是否有一种方法可以绕过这一问题,而不将“保护”更改为“公开”?我试图在ListQueue中的方法上方添加@Override,但表示它不会覆盖超类。

public class BaseMerging {

private static Queue mergeQueues(Queue<Comparable> q1, Queue<Comparable> q2) {


    Queue<Comparable> ListQueue = new ListQueue<Comparable>();

    while (!q1.isEmpty() && !q2.isEmpty()) {
    **DOES NOT RECOGNIZE "FRONT" METHOD**
         if (!less(q1.*front()*, (q2.*front()*))) { 

            ListQueue.add(q1.poll());

        } else {

            ListQueue.add(q2.poll());
        }

    }
    ...
}
public class ListQueue<Item> implements Queue<Item> {

protected Item front() {
    if(isEmpty())
        throw new NoSuchElementException();

    return head.getElement();
    }
    ...
}
public interface Queue<Item> {


     public Item front() throws NoSuchElementException;

...

}

我认为一个类可以从另一个类访问受保护的方法,只要它在同一个包中,但也许我错了。是因为ListQueue从队列继承了“front”吗?请帮忙。

共有1个答案

喻元龙
2023-03-14

当您覆盖超类方法时,访问修饰符不能比超类方法更具限制性。

您的实现违反了该规则。

因此,您不能使用受保护的访问修饰符覆盖public方法。

https://docs . Oracle . com/javase/tutorial/Java/IandI/override . html

选中修饰符部分。

 类似资料:
  • 本文向大家介绍Python实现队列的方法,包括了Python实现队列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现队列的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 我得到了这些结构声明,以便实现使用循环链表的队列集合。 我试图创建一个函数,它将以指定的值排队(将其追加到队列的后面),我需要考虑队列为空和队列有一个或多个元素的两种情况。这是我到目前为止的代码: 这段代码给了我一个运行时错误,所以我不确定出了什么问题。在代码中,我假设队列-

  • 本文向大家介绍C#通过链表实现队列的方法,包括了C#通过链表实现队列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#通过链表实现队列的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 我很难理解linkedlist队列的enqueue方法的代码。我理解dequeue()、isEmpty()、First()和size()。首先,这里有一个LinearNode类来创建新的节点对象: 下面是Enqueue方法 在此编辑包含Enqueue方法的LinkQueue类:

  • 我有一个链表类,这样实现(也进行了测试): 然后,我创建了一个队列类: 但是我不能在main上使用它,任何入队的尝试都会导致for循环崩溃,返回错误代码-1073741819。函数工作并显示。 输出: 我尝试为队列类编写一个构造函数来初始化LList类,但找不到正确的方法。如果我编写一个main函数只测试LList类,我就不需要初始化了,因为它的构造器已经在继续这个工作了。

  • 本文向大家介绍JS实现队列与堆栈的方法,包括了JS实现队列与堆栈的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现队列与堆栈的方法。分享给大家供大家参考,具体如下: 在面向对象的程序设计里,一般都提供了实现队列(queue)和堆栈(stack)的方法,而对于JS来说,我们可以实现数组的相关操作,来实现队列和堆栈的功能,看下面的相关介绍. 一、看一下它们的性质,这种性质决定了它们