2013-03-01 111 views
1

请找到链接以供参考:"Strategy for success" article of JavaWorld为什么我们实现接口抽象类

我的问题是为什么我们需要有单独的接口,并实现它的抽象类,我们可以声明抽象类的抽象方法本身?

EX图像,

public interface Border(){ 
     paintBorder(); 
     getBorderInsets(); 
     isBorderOpaque(); 
} 


public class abstract AbstractBorder implements Border(){ 
..... 
} 

,而不是我们能有像

public class abstract AbstractBorder { 
     paintBorder(); 
     getBorderInsets(); 
     isBorderOpaque(); 
} 

抽象类,为什么我们使用的界面?有什么必要?

+0

的可能的复制[接口VS抽象类(一般OO)](http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo) – 2016-06-07 07:34:25

回答

0

当我开始使用Java时,这也是我曾经想过的。一个非常详细的答案可以发现here。如果您需要进一步澄清,请发表评论。

0

是一个很好的实践编程接口,而不是上课。在战略模式中,这个想法具有“策略”的接口,在运行时你可以改变策略(实现接口的类)而不用改变其他代码。

这是一个良好的开端到SOLID原则,使您的代码更加灵活和强大。

我有一个exemple of the Strategy Pattern in my github和对象“Cavaleiro”(骑士英文)在运行时被改变。

对于我创建了一个接口,并使用它,而不是一个类的对象,并通过它,我可以改变“战略”容易。

1

也许接口定义行为,它们可能存在于其他抽象类,除了你提到的一个。一个很好的例子就是IDisposable接口。

如果您决定声明抽象类本身里面这些方法,你可能最终不得不面对很多混乱的,当你从这个抽象的实现的具体类。另外,由于您可以指定抽象类中的行为,因此此行为可能会被实现类重用。

相关问题