抽象类和接口之间的技术差异

这个问题在这里已经有了答案:

  • 界面和抽象类有什么区别? 32个答案

  • 请阅读http://javarevisited.blogspot.kr/2013/05/difference-between-abstract-class-vs-interface-java-when-prefer-over-design-oops.html

    Java中抽象类和接口的区别

    Java中的抽象类与接口以及何时使用它们在决定何时使用接口和抽象类时,了解Java中抽象类与接口之间的区别很重要。 在我看来,它们之间的两个区别决定了何时使用Java中的抽象类或接口。

    1)Java中的接口只能包含声明。 你不能在界面中声明任何具体的方法。 另一方面,抽象类可能包含抽象方法和具体方法,这使抽象类成为提供通用或默认功能的理想场所。 我建议阅读我的10篇关于Java接口的知识,以更多地了解接口,特别是Java编程语言。

    2)Java接口可以扩展多个接口,Java类也可以实现多个接口,这意味着接口可以提供比抽象类更多的多态性支持。 通过扩展抽象类,一个类只能参与一个Type层次结构,但通过使用接口,它可以成为多个类型层次结构的一部分。 例如,一个类可以同时运行和显示。 我可以记住的一个例子是在J2ME中编写GUI应用程序,其中类扩展了Canvas并实现了CommandListener以提供图形和事件处理功能。

    3)为了在Java中实现接口,直到你的类是抽象的,你需要提供所有方法的实现,这是非常痛苦的。 另一方面,抽象类可以在这种情况下通过提供默认实现来帮助你。 因为这个原因,我更喜欢在接口中使用最少的方法,从一开始,我不喜欢标记接口的想法,一旦在Java 5中引入了注释。如果您看起来像JDK或任何像Spring一样的框架,为了更好地理解OOPS和设计模式,你会发现大部分接口只包含一个或两个方法,例如Runnable,Callable,ActionListener等。

    在这里,我没有在Java中包含抽象类和接口之间的所有语法差异,因为这里着重学习何时使用抽象类和接口并选择其中的一个。 尽管如此,你可以看到接口和抽象类之间的区别,以找到所有这些语法差异。

    阅读更多信息:http://javarevisited.blogspot.com/2013/05/difference-between-abstract-class-vs-interface-java-when-prefer-over-design-oops.html#ixzz31l59K92Z


    您可以在上述场景中自由选择interfaceabstract class

    但请牢记以下事项

    如果你做了一个fully abstract class

    您的subclassextend一个类来实现该行为,并且由于java中不支持multiple inheritance ,所以它不适合扩展任何其他类。

    看到没有interface我们不能实现multiple inheritance

    现在,如果我们interface而不是fully abstract

    那么类可以实现它,并且仍然可以适用于扩展一个类。

    所以如果你的sub classes永远不需要扩展任何其他类,那么在你的设计中选择fully abstract类。

    如果sub classes需要稍后扩展某些类(通常是它在应用程序中的需求),则选择interface


    你编写一个带有接口,抽象类和具体类的java程序,但不提及任何构造函数,编译它并在.class文件中看到字节码。 您会看到预期的抽象类和具体类具有由编译器添加的默认构造函数,其中接口不会将构造函数通过编译器添加到其中。 这应该有助于您理解技术差异,因为我相信您知道其他差异。

    链接地址: http://www.djcxy.com/p/54259.html

    上一篇: Technical difference between abstract class and interface

    下一篇: what is the behaviour abstract class and interface in c#?