2014-11-28 3 views
2

этот код из источника ArrayList:Для чего нужен супер() в конструкторе ArrayList?

public ArrayList() { 
    super(); 
    this.elementData = EMPTY_ELEMENTDATA; 
} 

этот код из AbstractList источника:

protected AbstractList() { 
} 

Что супер() делать?

+0

Вы хотите знать, что делает 'super' вообще, или почему' super' используется в этом контексте? – Makoto

+0

В этом контексте – zeds

ответ

4

В общем, super будет вызывать его родительский конструктор с соответствующими аргументами. В этом случае, поскольку AbstractList имеет неявный конструктор no-arg, мы используем super() без аргументов для вызова неявного конструктора no-arg.

Что касается Почему - в этом случае нет причин для этого, если нет требования устанавливать поля в родительском классе. Возможно, это был случай более старого стиля программирования.

Это не вредит, и это самодокументируется; он явно выражается в том, что он вызывает конструктор своего родителя. Хотя, отмечу, что Javadoc для этого конструктора вызывает свою полезность вызова:

/** 
* Sole constructor. (For invocation by subclass constructors, typically 
* implicit.) 
*/ 

Вы больше шансов увидеть неявные вызовы этого конструктора, чем явные.

+1

Может также быть здесь, чтобы предвидеть версию, где конструктор 'AbstractList' действительно что-то сделает. – ortis

+0

Учитывая, что' AbstractList' существует с момента 1.2, я искренне сомневаюсь, что они что-то ожидали от этого конструктора. Это также может быть наследие. Я не уверен; Мне пришлось бы вывести историю исходного кода, чтобы сказать вам наверняка. – Makoto

-1

super() вызов родительского конструктора.

super() не нужен, однако это не плохая привычка писать, потому что он хорош для удобочитаемости - он напоминает вам, что вызывается родительский конструктор.

Смотрите этот вопрос When do you need to explicitly call a superclass constructor?

+2

* Никогда не нужно? Вы уверены в этом? – Makoto

+0

Хорошо, позвольте мне переписать ответ, я не очень хорошо себя зарекомендовал. – Michal

+0

Редактировать: после некоторого поиска в Google, я уверен. Это никогда не нужно. – Michal

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