java - 为什么需要java中的接口(interface)?

标签 java interface abstract

<分区>

带接口(interface)的代码

/* FileName : cat SampleInterface.java */
public interface SampleInterface
{
        public void draw();
        public void color();
}

代码与抽象方法

/* FileName : SampleAbstractMethod.java  */
abstract class SampleAbstractMethod
{
        public abstract void draw();
        public abstract void color();
}

它们有什么不同?

肯定会有很大的不同,如果抽象方法就足够了,Java 开发人员就不会引入接口(interface)。我看到的共同点是

  1. 两者都不能有定义,就像我发布的代码一样。

  2. 继承或实现类必须引入定义。

据我所知,抽象方法可以做接口(interface)可以做的事情,那么为什么要有接口(interface)呢?抽象方法不能做的接口(interface)有什么特别之处?出于什么确切原因需要和接口(interface)?

编辑:我的问题是关于抽象方法和接口(interface)之间的区别,而不是重复链接指向我的抽象类。所以请解释我的问题与标记的重复项有何相似之处。

最佳答案

只有在存在"is"关系时才使用抽象类;接口(interface)可以由没有任何共同点的类实现。

抽象类可以实现方法;接口(interface)不能实现方法。

接口(interface)只能描述常量值和方法,不能实现它们。默认情况下,接口(interface)的所有方法都是public abstract,变量都是public static final

在Java中类可以继承(实现)很多接口(interface),但只能继承一个抽象类。

有了抽象类,你就失去了继承它的类的个性。使用接口(interface),您只需扩展每个类的功能。

界面的例子是“飞行”:蝴蝶、鸟或飞机。 抽象类的示例是“游戏”:足球、板球或国际象棋。

更新: 至于方法,您可以在接口(interface)和抽象类中都有抽象方法。你只需要选择在哪里使用它们。这个问题会引导您了解接口(interface)和抽象类之间的区别。

关于java - 为什么需要java中的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078250/

相关文章:

java - 如何根据点数组列表画圆?

java - 我不知道如何使用类类型作为参数

python - Python 中的抽象方法继承

playframework-2.0 - Morphia InstantiationException 与抽象 @Embedded 类

java - 在java中使用selenium web驱动程序从div获取文本值

java - 从友好的 url portlet 获取参数 jsr 286

go - fmt.Println() 时 golang 编译器会做什么

c - FreeBSD:网络接口(interface)信息

java - 为什么要将 Java 接口(interface)方法声明为抽象的?

java - GitHub Actions : "Could not find a valid Docker environment. Please see logs and check configuration" 上 Windows 环境中的测试容器