我的情况是

头等舱:

public class Form{
   public Form(String id){
       super(id);
   }
  // some methods ...
}


二等舱:

public class Panel{
  public Panel(String id){
     super(id);
  }
// some methods...
}


我可以像

public class MyForm extends Form {




public class MyPanel extends Panel {


但这是重复的代码,因为在MyPanelMyForm中,我有两次相同的方法!

我知道在Java中不可能从2个类进行扩展。

我想创建一个从ClassForm扩展并继承方法Panel的抽象泛型findComponent()

最佳答案

两种方式:


您可以使用接口并声明findComponent()方法
原型;
您可以创建一个包含findComponent()的AbstractComponent抽象类。


这将完全取决于您的需求。如果您只需编写一次findComponent方法,请使用抽象方法。否则,请使用界面。

对于抽象解决方案:

Form extends AbstractComponent {
   ...
   @Override
   protected void findComponent() {...}


Panel extends AbstractComponent  {
   ...
   @Override
   protected void findComponent() {...}
}

public abstract class AbstractCOmponent {
   protected abstract void findComponent();
}


@Giovanni Botta:是的,当然,总是喜欢Interface。并且总是喜欢组合而不是继承。但是在这里,如果他不想重复其代码,那么Abstract会更好。

09-27 14:06