2016-03-02 87 views
1

所以没有课程扩展as in this question,所以我想了解什么是超级()方法调用正在做什么?在这个java方法中超级关键字是什么?

我可以理解,如果关键字延伸被用作引用SO问题,但它不是。

public class Solver { 
    private Node result; 

    private class Node implements Comparable<Node> { 
    Node prev; 
    Board value; 
    int moves = 0; 
    int priority; 
    public Node(Board value, Node previous) { 
     super(); 
     //stuff 
     //stuff 
    } 

    @Override 
    public String toString() { 
     //stuff 
    } 

    @Override 
    public int compareTo(Node node) { 
     //stuff 
    } 
    } 
} 
+3

它调用超类的构造函数。 Java中的每个类都来自Object类。 'private class Node'扩展Object。 – Willmore

+2

这里实际上并不需要,要么你明确地做,要么编译器会为你做。 – Kartic

回答

1

总是有所谓的Object一个超类,所以它会调用的Object构造。

+0

但是为什么在Node中调用超级呢?为什么不在Solver中调用它?我不明白你为什么要首先调用Object构造函数 – Nona

+0

U可以通过http://docs.oracle.com/javase/tutorial/java/IandI/super.html –

+0

@Nona'Solver'和'节点'是两个不同的类。创建'Solver'对象时调用'Solver'的构造函数,并且在创建'Node'对象时调用'Node'的构造函数。如果'Node'是一些有趣的东西的子类,那么在'Solver'中调用'super()'在创建'Node'时根本无济于事。 – ajb

1

当你没有扩展任何类时,默认情况下,继承的类是Object,所以它调用Object类的构造函数。

相关问题