2016-03-02 41 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類的構造函數。