您能否从 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();
}
我无法访问来自不同 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();
}