相当于传递消息的入口
具体的如下:
对象通过其公开的方法定义了它们与外界的交互。方法形成对象与外界的接口;例如,电视机正面的按钮是您与塑料外壳另一侧的电线之间的接口。您按下“电源”按钮可以打开和关闭电视。
在最常见的形式中,接口是一组具有空主体的相关方法。如果将自行车的行为指定为接口,则可能如下所示:
class ACMEBicycle implements Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and applyBrakes
// all be implemented. Compilation will fail if those
// methods are missing from this class.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
参照https://docs.oracle.com/javase/tutorial/java/concepts/interface.html
hand shake hand
定义方法(行为)的名称、参数类型和返回值类型。为什么需要接口可参见这里:www.oodesign.com
全是英文,看不懂
@勤快的懒羊羊: 可以看看“设计模式”相关的书,就知道接口的妙用了
这个不错 👍
定义:Java接口(Interface),是一系列方法的声明,是一些方法特征的集合。
举例:电视机的电源按钮就是连接用户与电视机之间的接口,用户不用太关心电视机里面结构,点击按钮就能使用电视机功能。
java中什么是接口
打lol吗?
比如一个接口叫英雄,他有走路,平A,施法的方法(还没具体写出来,我们称为还未实现)
然后现在搞一个EZ出来,实现了英雄这个接口,然后用自己的代码重写了里面的走路,平A,施法等方法,
现在又搞一个VN出来,同样也实现了英雄这个接口,也写了自己的走路,平A,施法。
说的扯淡一点,接口是最高层次的抽象,下面还有抽象类和其他的一些东东。
就是一个模型,你可以实现这个模型,在上面搞你自己的一些乱七八糟的东西,但是,这个模型里面的全部东西,你都要给他搞出来,如果你只想搞一半,其他的不搞了,请用抽象类实现接口,再用类继承抽象类。
个人见解,欢迎辩论,不喜勿喷,诚心求学。
有接口的原因是java单继承,但是你想要更多的功能,这个时候怎么办呢,实现多个接口就好啦。
比如你和你爸就是单继承,你只能继承你爸的房子,但是你不但想要房子,还想要别墅怎么办呢,傍个大款(干爹)啊,听他的话,按照他的要求做事情,说不定他一高兴就会给你买跑车、别墅。你的目标不就实现了么。哈哈哈
可以这样理解,一个人可以具有多项能力,一个类可以实现多个接口,一个接口就是一种能力
给你个简单明了的说法:
Java中的Interface,通俗来讲就是定义规则,规定一个Class只能存在什么方法。
你可能想一会儿后会有疑问,为什么要这么做?我直接在Class里面为所欲为不好么,为什么要被限定死。
其实这是个角度问题,举几个例子:
当你的上级要求你实现某个功能时,他自己写了一个接口,定义了一系列的方法签名在其中,然后要求你以他的Interface文件名+Impl 命名你的Class,并且要求你根据Interface内定义的方法签名,写出其具体实现,方法的参数及返回值他都已经规定到了Interface中,你只需要写具体实现过程即可。
再举一个例子:
JAVA JDBC相信你清楚,你有没有考虑过,为什么JAVA JDBC一套代码就能兼容市面上那么多数据库?
因为JDBC提供了一套约定,或者叫一系列的Interface,要求想要能够JAVA使用的数据库厂商们,必须遵守JAVA提出的约定,你可以有时间看看Mysql-Connection.jar 内的代码结构,其中JAVA SPI技术可能很多人都不清楚,个人建议需要明白什么是SPI。
以上两个例子从不同的角度解释了Interface,如果还有不明白的地方,欢迎联系我。