我的情况是
头等舱:
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 {
但这是重复的代码,因为在
MyPanel
和MyForm
中,我有两次相同的方法!我知道在Java中不可能从2个类进行扩展。
我想创建一个从
Class
或Form
扩展并继承方法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会更好。