2014-02-03 5 views
2

Запрашивать из любопытства ...Удалить методы или поля из класса, который расширяет компонент качания

Предположим, у нас есть класс, который расширяет Jpanel. И нам не нужны все методы Jpanel. Например, мы не будем использовать ToolTipText для нового класса, поэтому нам не нужен метод setToolTipText. Мой вопрос: возможно ли удалить методы, которые нам не нужны из нового класса? Если да, то имеет ли значение скорость выполнения (возможно, более быстрое строительство)?

ответ

2

Можно ли удалить методы, которые нам не нужны из нового класса?

  • Да, это возможно, но будьте осторожны, есть различия между добавлением любого Listener к простому JPanel (любым способом (ов)/удаляются) и добавление Listener к JPanel где Listener был удален, оповещатели модифицируются

  • не можете найти истинную причину, может быть контрпродуктивным, но очень разные ситуации будет в случае, если вы хотите изменить встроенный слушателей, оповещатели, ускорители

  • все методы addXxxXxx, реализованные в API возможно удалить (срок действия JPanel, не может быть справедливо для всех соединения JComponents)

Если да, то он делает никакой разницы в скорости выполнения (быстрее возможно, строительство)?

  • Я сомневаюсь, что это все зависит от метода (ов), что/вынуждены от слушателей (ваших настроек, ваш код)
0

Если метод никогда не вызывается, то нет никакой разницы в скорости выполнения класса. Удаление методов уменьшилось во время компиляции, но было бы незначительным.

0

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

2

Можно ли удалить методы, которые нам не нужны из нового класса?

Если вы хотите скрыть часть интерфейса от пользователя класса, то вы не должны использовать inheritance. Помните, inheritance для отношения is-a, и если подкласс Ais a JPanel, то он, безусловно, имеет значение для ToolTip. То, что вы должны использовать, - Composition, что позволяет вам маскировать часть методов сложенных объектов.

Пример

public class A 
{ 
    public void wantedMethod() {} 

    public void unwantedMethod() {} 
} 

Если бы я хотел, чтобы скрыть unwantedMethod от моего подкласса, я мог бы сделать что-то вроде этого:

public class B 
{ 
    private A a; 

    public void wantedMethod() { 
     a.wantedMethod(); 
    } 
} 

Это не позволит unwantedMethod бежать в interface класса B.

+0

Это позор, что GUI код Уроки злоупотребляйте наследование как Никого не касается. –

+0

Они конечно делают. 'inheritance' использует его, но когда вы имеете дело с классами с такими же размерами, как' Component' в Java, вам действительно нужно рассмотреть другой подход. – christopher

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