您能否从 java 中的不同 classes 静态方法访问派生 class 中的非静态方法?

Can you access a non static method in a derived class from a different classes static method in java?

我无法访问来自不同 class 的派生 class 中的非静态方法。

public class Test
{
   public static void main(String args)
   {
      LinkedList myList = new LinkedListExtension();

      TestMethods.methodOne(myList);// passed the method myList
   }
}

public class TestMethods
{
   public static void methodOne(final LinkedList myList)
   {
      myList.clear(); // this is the part I am having trouble with
   }
}

public class LinkedList
{
   protected static class Node
   {
      public Comparable data;
      public Node next;
      public Node(final Comparable data)
      {
         this.data = data;
         this.next = null;
      }
         public Node()
      {
         this.data = null;
         this.next = null;
      }
         public Node(final Comparable data, final Node next)
      {
         this.next = next;
         this.data = data;
      }
   }

   protected Node head;
    protected int size;

   public LinkedList()
   {
      this.head = new Node();
      this.size = 0;
   }
}

public class LinkedListExtension extends LinkedList
{
   public void clear()
   {
      this.head = new Node(); 
      this.size = 0;
   }
}

我知道如果我在 LinkedList class 中有 clear() 方法,代码将编译并正常运行。因此,在不更改 LinkedList class 和 Test class 中的任何内容的情况下,如何调用 LinkedList 扩展中的 clear() 方法?有可能吗?如果这个问题不清楚,我深表歉意,我是编程方面的菜鸟,仍然很难理解继承。

您的 LinkedList 版本没有 clear() 方法。您可以将它从 LinkedListExtension 移动到 LinkedList,或者您可以编程为 LinkedListExtension

public static void methodOne(final LinkedListExtension myList) {
    myList.clear();
}