界面有什么用?动态方法解析在运行时如何工作?

时间:2010-10-22 23:56:32

标签: java interface

抽象类和接口有什么区别?

5 个答案:

答案 0 :(得分:8)

接口是无状态的。它们不能给变量,尽管它们可以有常量。 此外,接口提供“按合同设计”功能。 抽象类强制实现具体实现,其中接口允许更多灵活性,因为实现该接口的任何类都可以在运行时替换。 此外,由于接口只是描述暴露的行为,而不是实现,因此它允许多重继承。 抽象类更具设计便利性,因为它们提供了编译器实现,因为子类必须实现抽象方法。 接口和抽象类是相关的,但用于不同的目的。 在运行时,检查对象的类型并调用相应的类方法。 这也称为后期绑定。 这是由运行时VM完成的,而不是程序员完成的,因此从程序代码中取出If Else测试。因此,您的代码更灵活,并且不依赖于类类型来解析正确的调用方法。因此我们也称为多态性。

答案 1 :(得分:5)

抽象类可以实现方法。界面不能。另外一个类只能扩展一个抽象类,但可以实现许多接口。

答案 2 :(得分:4)

界面的使用:当不同的程序员群体同意一份说明其软件交互方式的“合同”时,软件工程中有很多情况。每个组都应该能够编写代码,而不必知道如何编写其他组的代码。一般来说,接口就是这样的合同。

使用接口的一个好处是它们模拟多重继承。 Java中的所有类(java.lang.Object除外,Java类型系统的根类)必须只有一个基类;不允许多重继承类。此外,Java类可以实现,并且接口可以扩展任意数量的接口;但是接口可能没有实现接口。

接口的另一个用途是能够在不知道其类型的情况下使用对象,而只是它实现了某个接口。

差异bw抽象类和接口:抽象类是一个包含一个或多个抽象方法的类,必须由子类实现。抽象类也不能包含抽象方法。 Java接口只能包含方法声明和公共静态最终常量,并且不包含它们的实现。实现接口的类必须为所有存在的方法提供方法定义。抽象类意味着必须扩展类。必须通过继承树中的第一个具体类来扩展抽象类。在抽象类中,我们可以同时具有方法的声明和定义,但在接口中只有方法签名,根本没有定义。接口就像100%纯抽象类。一个类只能扩展一个类,但可以实现多个接口。接口提供多重继承而不会导致deadly diamond of death问题。

答案 3 :(得分:0)

答案 4 :(得分:0)

缺点:如果你有一个1000类在你的库中实现一个接口,明天如果你想在接口中有一个额外的方法,那么改变应该反映在各处