Как правильно смоделировать измененный тип возвращаемого значения, когда подкласс переопределяет метод суперклассов - PullRequest
0 голосов
/ 30 сентября 2010

Вопрос, который я задаю, состоит в том, правильно ли я смоделировал подклассы UserControl. В частности, базовый класс имеет метод public abstract JComponent toComponent(). Во время реализации подклассы должны переопределять метод, сохраняя при этом сигнатуру метода, за исключением того, что оператор return должен возвращать специализированный компонент, т.е. На диаграмму и прийти к следующему выводу.

public JButton toComponent(){
      if(GUIComponent == null || !(GUIComponent instanceof JButton)){
        return new JButton();
      } else{
        return (JButton) GUIComponent;
     }
}

Где предполагаемая реализация:

  public JComponent toComponent(){
          if(GUIComponent == null || !(GUIComponent instanceof JButton)){
            return new JButton();
          } else{
            return GUIComponent;
         }
    }

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

1 Ответ

0 голосов
/ 30 сентября 2010

Если вы намереваетесь, чтобы подписи дочернего класса возвращали JComponent, тогда, конечно, диаграмма должна сказать это, а не сказать, что они возвращают JButton или что-то еще?

Ваша диаграмма должна указывать фактический интерфейс. В настоящее время раскрывается деталь реализации, что объект JButton создан.

...