2016-03-02 3 views
1

Так что нет расширения класса as in this question, поэтому я пытаюсь понять, что делает super() метод call делает?Что такое ключевое слово super в этом 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' расширяет объект. – Willmore

+2

Здесь не нужно, либо вы делаете это явно, либо компилятор сделает это за вас. – Kartic

ответ

1

Существует всегда супер класс называется Object, поэтому он будет вызывать конструктор Object.

+0

Но зачем звонить супер в узле? Почему бы просто не позвонить в Solver? Я не понимаю, почему вы бы назвали конструктор Object в первую очередь – Nona

+0

U можно пройти через http://docs.oracle.com/javase/tutorial/java/IandI/super.html –

+0

@Nona 'Solver' и' «Узел» - это два разных класса. Конструктор для 'Solver' вызывается, когда вы создаете объект' Solver', и конструктор для 'Node' вызывается при создании объекта' Node'. Если 'Node' был подклассом чего-то интересного, то вызов' super() 'в' Solver' вообще не помог бы при создании 'Node'. – ajb

1

Если вы не продлеваете класс, то по умолчанию унаследованный класс является Object, поэтому он вызывает конструктор класса Object.

Смежные вопросы