Функция super () в JAVA

Класс кнопки:

class SubmitButton extends JButton implements ActionListener {
    public SubmitButton(String title){
        super(title);
        ....

Где я это заявляю:

SubmitButton submit = new SubmitButton("Submit");
submit.setBounds(530+150, 200, 100, 25);

Как super (title) устанавливает заголовок String в заголовок кнопки? Как он работает так же, как метод .setText () для обычных кнопок JButton?

Другими словами, как вызов super () делает то же самое, что и .setText () как super () узнает, что нужно изменить заголовок? является ли .setText () единственным методом в классе JButton, который принимает строку в качестве параметра?

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

twister_void 02.07.2013 18:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
1
52 319
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

http://java.sun.com/javase/6/docs/api/javax/swing/JButton.html#JButton(java.lang.String)

(скопируйте и вставьте весь URL-адрес; по какой-то причине часть String не связана)

Он вызывает конструктор, определенный в связанном выше классе JButton, который устанавливает текст кнопки в переданную строку. Super () - это вызов конструктора суперкласса.

Я как раз искал ссылку на javadocs и мое объяснение. Я никогда не бываю достаточно быстро.

kevindaub 20.12.2008 06:51

JButton - это центральный класс Java Swing, поддерживающий несколько конструкторов. Один из этих конструкторов позволяет вам установить текст для метки кнопки.

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

Операция setText () позволяет изменять текст после создания кнопки, но (обычно) до ее отображения.

Хорошее объяснение. Я обычно нахожу такие вопросы очень сложными.

Adeel Ansari 20.12.2008 06:49

Спасибо. Раньше я преподавал ООП студентам, поэтому часто сталкивался с такими вопросами.

Uri 20.12.2008 07:19

Когда SubmitButton инициализируется конструктором SubmitButton (String title), вы вызываете конструктор родительского / суперкласса с заголовком. Если вы не указали super (заголовок), компилятор Java автоматически вставит код для вызова конструктора суперкласса по умолчанию. Тогда заголовок не будет установлен при создании SubmitButton.

Кроме того, суперкласс (JButton) может использовать .setText (строку) в своем конструкторе, и поэтому он выполняет ту же функцию (необходимо посмотреть на фактический источник Java).

http://www.javaworld.com/jw-10-2000/jw-1013-constructors.html?page=2
http://leepoint.net/notes-java/oop/constructors/constructor.html

Еще одно хорошее объяснение. Вы, ребята, действительно хорошие учителя.

Adeel Ansari 20.12.2008 06:56
Ответ принят как подходящий
  • SubmitButton расширяет JButton
  • У JButton есть конструктор, который может выглядеть так (упрощенно):

    public JButton(String title) {
        setText(title);
    }
    
  • SubmitBUtton имеет конструктор:

    public SubmitButton(String title) {
        super(title);
    }
    

Конструктор SubmitButton вызывает конструктор суперкласса (JButton), который, в свою очередь, вызывает setText. Теперь внутри JButton может работать по-другому, но эффект тот же.

Общая суть в том, что super (...) вызывает конструктор суперкласса.

Во всех случаях в java этот «вызов» super() вызывает ctor родительского класса. Как и все функции, когда вы вызываете ctor, шаблон Java соответствует имени и типам параметров. JButton объявляет ctor со строковым аргументом, поэтому, когда вы вызываете super(title), вы вызываете конструктор для непосредственного суперкласса (JButton), который принимает единственный строковый аргумент.

Я лично решил эту проблему, установив заголовок, а не текст.

static String TitleName = "Некоторый заголовок"; супер (НазваниеНазвания);

Затем на вашей кнопке или там, где должно произойти действие.

setTitle ("Новый заголовок");

У меня это работает. :-)

Другие вопросы по теме