knd*_*knd 2 java oop inheritance static extends
我只是想做的是从LinkedList扩展一个类.这是我的代码:
import java.util.*;
class Test {
public static void main( String [] args ) {
OrderedLinkedList ol = new OrderedLinkedList();
}
public class OrderedLinkedList extends LinkedList<Integer> {
public boolean add( Integer item ) {
for (int i=0; i < size(); i++) {
Integer itemOfList = get( i );
if ( itemOfList.compareTo( item ) > 0 ) {
add( i, item );
break;
}
}
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此消息的编译错误:
Test.java:7: non-static variable this cannot be referenced from a static context
OrderedLinkedList ol = new OrderedLinkedList();
^
1 error
Run Code Online (Sandbox Code Playgroud)
我相信除了实例化之外,我没有引用任何东西.
内部类具有对其外部类的隐式引用,除非标记为static.
您需要将内部类标记为static以避免这种情况:
public static class OrderedLinkedList extends LinkedList<Integer> {
Run Code Online (Sandbox Code Playgroud)
所以编译器抱怨内部类没有Test的实例,因为main是静态方法.