关于java:接口有什么用?

What is the use of interface? how dynamic method resolution works at runtime?

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


接口是无状态的。它们不能给出变量,尽管它们可以有常量。此外,接口还提供"按合同设计"功能。抽象类强制一个具体的实现,其中接口允许更大的灵活性,因为实现该接口的任何类都可以在运行时被替换。另外,由于接口只描述了公开的行为,而不是实现,所以它允许多重继承。此外,抽象类更为方便设计,因为它们在子类中为编译器强制提供了必须实现抽象方法的功能。接口和抽象类是相关的,但有不同的用途。在运行时,将检查对象类型并调用相应的类方法。这也被称为后期绑定。这是由运行时虚拟机完成的,而不是由程序员完成的,这样就可以从程序代码中去掉if-else测试。因此,您的代码更加灵活,并且不依赖类类型来解析要调用的正确方法。因此我们也叫多态性。


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


界面的使用:在软件工程中,有很多情况下,对于不同的程序员群体来说,同意一个"合同"是很重要的,它阐明了他们的软件是如何交互的。每个组都应该能够编写自己的代码,而不需要知道其他组的代码是如何编写的。一般来说,接口就是这样的契约。

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

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

区别BW抽象类和接口:抽象类是包含一个或多个抽象方法的类,必须由子类实现。抽象类也不能包含任何抽象方法。Java接口只能包含方法声明和公共静态最终常量,不包含它们的实现。实现接口的类必须为所有存在的方法提供方法定义。抽象类意味着类必须扩展。抽象类必须由继承树中的第一个具体类扩展。在抽象类中,我们可以同时拥有方法的声明和定义,但是在接口中,只有方法签名,根本没有定义。接口就像100%纯抽象类。一个类只能扩展一个类,但可以实现多个接口。接口提供多个继承,而不会导致致命的死亡钻石问题。


缺点:当您有1000个类在库中实现接口时,明天如果您希望在接口中有一个额外的方法,那么更改应该反映在所有地方。


在此进行广泛讨论:

  • C语言中的抽象类和接口#
  • 抽象类是否可以替换接口?