2014-01-03 5 views
0

Надеюсь, это не дубликат, потому что я не нашел ответа на это. Только что-то относится к деструкторам C++, но я ничего об этом не знаю. Во всяком случае, я использовал, чтобы переопределить свои методы на собственном зародыше ускорить процесс теперь я иду trought затмения исходного переопределение/реализовать методы, и я не понимаю, почему затмение автоматически вставлятьМетод переопределения в eclipse с помощью метода метода-метода переопределения/реализации метода вызова для меня. Почему?

super.method(event); 

в моем code, Почему eclipse делает это для меня? Действительно ли это что-то? Я все равно так называю этот метод, почему он должен быть там дважды, я не понимаю. пример того, что я имею в виду:

someJlabel.addMouseListener(new MouseAdapter() { 

     @Override 
     public void mouseEntered(MouseEvent e) { 
      // TODO Auto-generated method stub 
      super.mouseEntered(e); // <-- 
     } 

    }); 

Я уже знаю, что если я его нет там все работает нормально, и если я also.So, если кто-нибудь может объяснить мне, я был бы очень рад, сво маленькая бутон, я хочу знать, что происходит.

ответ

1

Это вызывает метод с тем же именем из класса super/parent. Как правило, это зависит от вас, если вы хотите включить этот вызов в родительский класс или нет. Eclipse просто предлагает это. Если этот метод в родительском классе ничего не делает (например, имеет пустое тело), ​​тогда чисто практическое рассмотрение не имеет значения, добавляете ли вы этот вызов или нет в производном/дочернем классе. Но если метод родительского класса делает что-то полезное, иногда рекомендуется включить этот вызов, так как вы также получите поведение родительского класса. Вот почему Eclipse предлагает вам сделать это.

+0

Это в значительной степени объясняет все это. Благодарю вас, я думаю, для меня будет хорошей практикой держать его там рядом с моим кодом. –

2

super.mouseEntered(e); является вызовом метода mouseEntered() как определено в родительский класс MouseAdapter. Так что это не тот же метод, который вызывается дважды.

В качестве переопределяющих методов вы часто называете супер метод (например, вы вызываете super in constructor), а затем вы можете делать некоторые дополнительные действия. Если вы оставите там просто super.method(), тогда он будет вести себя так, как будто вы не переопределили его вообще.

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