Расширяет конструкторы из класса - PullRequest
0 голосов
/ 09 июня 2011

У меня есть класс, расширяющий JList, и я не знаю, как заставить конструкторы JList работать в моем классе. Я знаю, что это можно сделать с помощью конструктора JList:

DefaultListModel model = new DefaultListModel();
JList list = new JList(model);

Вместо этого, если я сделаю то же самое с моим классом:

DefaultListModel model = new DefaultListModel();
DatabaseJList lista = new DatabaseJList(model);

В среде IDE предлагается удалить аргумент, соответствующий DatabaseJList.

Разве не предполагается, что конструкторы Jlist наследуются моему классу, когда я расширяю его?

Спасибо за помощь;)

Ответы [ 4 ]

4 голосов
/ 09 июня 2011

Нет. Вы должны определить конструкторы явно. Любой конструктор, который вы хотите «наследовать», должен быть определен в подклассе и, скорее всего, должен вызывать super(..) с теми же аргументами.

1 голос
/ 09 июня 2011

Конструкторы не наследуются (по крайней мере, не в том смысле, о котором вы думаете). Вы должны явно написать такой конструктор:

class DatabaseJList extends JList {

    public DatabaseJList(ListModel model) {
        super(model);  // Call through to the super-class constructor
    }

    ...

}
0 голосов
/ 09 июня 2011

думаю нужно поставить супер (модель);в вашем конструкторе DatabaseJList

0 голосов
/ 09 июня 2011

Вы можете вызвать конструктор суперкласса в конструкторе вашего класса, используя

super(...)

Определите конструктор в вашем классе с теми же параметрами, что и у суперклассов '.Затем просто используйте super () для вызова конструктора суперкласса, а затем продолжайте инициализацию

Помните, что super () должен быть в первой строке вашего конструктора

...