Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接口是一个类吗?_Java_Interface - Fatal编程技术网

Java 接口是一个类吗?

Java 接口是一个类吗?,java,interface,Java,Interface,接口是一种特殊的类,还是说接口根本不是类?接口不是类,但可以说接口和类都是类型 从: 在Java编程语言中,每个变量和每个表达式都有一个可在编译时确定的类型。类型可以是基元类型或引用类型。引用类型包括类类型和接口类型 请注意,尽管有一个名为的特殊类可以表示类和接口: 类的实例表示正在运行的Java应用程序中的类和接口 一个接口由一个类实例表示,该实例为真,这一事实可能会给人一种印象,即接口只是一种特殊类型的类。然而事实并非如此。接口只是所有实现类都应该遵循的契约。 接口类似于模板,在类实现它之前

接口是一种特殊的类,还是说接口根本不是类?

接口不是类,但可以说接口和类都是类型

从:

在Java编程语言中,每个变量和每个表达式都有一个可在编译时确定的类型。类型可以是基元类型或引用类型。引用类型包括类类型和接口类型

请注意,尽管有一个名为的特殊类可以表示类和接口:

类的实例表示正在运行的Java应用程序中的类和接口


一个接口由一个
实例表示,该实例为
,这一事实可能会给人一种印象,即接口只是一种特殊类型的类。然而事实并非如此。

接口只是所有实现类都应该遵循的契约。
接口类似于模板,在类实现它之前无法产生影响。

不,接口在Java中不是类

接口是一种类型,所有引用类型(即非基元类型)在Java中的处理方式都非常相似。通常,当人们说“类”时,他们实际上指的是“引用类型”


可能让您感到困惑的是,接口定义存储在
.class
文件中,但这只是Java的技术产物。事实上,所有引用类型定义(类、接口、注释、枚举)都存储在Java中的
.class
文件中。

是的,接口是
Java.lang.class
的实例。如果您有一个
,您可以询问它是否是一个接口:

一个接口(是一组具有空主体的相关方法)就是一个接口。它不是一个类(类是创建单个对象的蓝图)

请注意,您定义了这样一个接口

interface Bicycle {....}
class MyBMX implements Bicycle{...}
类的定义是这样的

interface Bicycle {....}
class MyBMX implements Bicycle{...}

因此,接口是接口而不是类

接口的概念来自抽象类,其中抽象类包含方法(或抽象方法)的原型,并且可以定义很少的方法,而接口只包含方法或抽象方法的原型(或签名),其定义将由实现类提供。 因此,从上面的语句可以清楚地看出,接口就像100%的抽象类- 它的任何方法都没有定义。 再次提到接口就像是100%的抽象类,而不是类

“接口是类可以执行的操作的契约”

引入接口的一个原因是,我们可以
只扩展
一个类,但接口在java中带来了一个新事物
实现
,因此我们可以实现数千个接口,所以我们不能说它是一个类


你可以了解更多

是接口是一种类。简单地说,类内方法和数据也存在于接口方法(仅抽象方法)和数据(仅静态和最终)中。

更多信息,请观看

简短版本:=>我不理解投票结果:这怎么不是一个真正的问题?界面基本上是轮廓。它们定义了所有子类都需要实现的方法。由于接口不包含可执行代码,因此无法创建接口的实例。您需要先编写一个类来实现这些方法,然后才能使用它。没错,但有误导性<代码>类可以表示所有类型,这并不意味着所有类型都是类!作为回答,它和API本身一样具有误导性。很抱歉,这并不能回答问题。正如我所读到的,问题不是“什么是接口?”@JoachimSauer抱歉……我错了。我喜欢将接口等同于合同的解释。我认为真正有助于新手理解OOP中接口的要点或要点的是设计您的名称您的接口名称以
-able
结尾。这样你就能清楚地知道它的意图。当你命名一个界面
Bicycle
或者更糟糕的界面时,就像我们的微软朋友
ibiccycle
一样,你就制造了认知失调。但是让一辆自行车可以骑怎么样?或
可共享的
?等等等等。这使它更容易理解。