接口是什么
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
我的理解:它是一种特殊的类,特殊在它里面全是由全局常量和公共抽象方法组成,接口它是解决Java语言无法多继承的一种方法,但它更多的则是用来制定标准。(何为标准,标准就是类需要实现我这个接口,那就必须先实现我里面设置的某些方法)
接口是存抽象类
所有成员函数都是抽象函数
所有的成员变量都是public static final
为什么要用接口
- 接口被用来描述一种抽象。
- 接口可以解决Java当中的多继承。
接口与抽象类区别
抽象类中可以中可以有方法体,也就是能实现方法的具体功能,但是接口却不行,接口中只能定义方法,却不能实现它。
抽象类中可以有各种类型的成员变量,但是接口中的成员类型只能是public,static,final类型的。
一个类只能继承一个抽象类,但是一个类却可以实现多个接口。(实现Java中的多继承)
接口的声明:
interface 接口名称
{
声明变量;
抽象方法;
}
例:

小结
为了声明接口,我们需要使用interface这个关键字。
接口中的属性类型默认为public,final,static。
接口中的所有方法都在需要去定义,而不需要去实现。(这和抽象类中的方法定义差不多)
一个类要实现这个接口,就必须这个接口中的所有方法体
(例如:节能是一个接口,那变频是一个方法体,如果想要去实现节能,那我们就必须先实现变频。)
重点
我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的。想要实例接口,我们可以使用接口类型的引用指向实现了该接口的对象,从而调用接口中的方法,但实际上是调用了实现该接口的类的方法。(实际上就是Java多态中的特性)
一个类可以实现多个不同的接口。(Java实现多继承)
接口之间可以像类一样实现继承,还可以实现多继承。
一个类如果要实现一个接口,那必须要先实现这个接口中的所有方法。
接口模式的介绍
接口通常代表的是一种承诺,即方法需要实现接口方法名表示的操作,Java将接口概念提升为独立的结构,体现了接口与实现的分离。
接口型模式包括:适配器模式、外观模式、合成模式、桥接模式。
接口实例
UML图
实现接口
类用extends,接口用interface
类可以实现很多接口
接口可以继承接口,但不能继承类
接口不能实现接口
面向接口的编程方式
设计程序时先定义接口,在实现类
任何需要在函数间传入传出的一定是接口而不是的类
是Java成功的关键之一,因为适合多人同时写一个大程序
也是Java被批评的要点之一,因为代码量膨胀起来也很快
Animal类
package demo02.clock.jiekou;
/**
* Created by lulei on 2019/4/9.
*/
public interface Animal {
void eat();
void speak();
}
Cat类
package demo02.clock.jiekou;
/**
* Created by lulei on 2019/4/9.
*/
public class Cat implements Animal {
public void eat() {
System.out.println("爱吃鱼!");
}
public void speak() {
System.out.println("喵!喵!喵!");
}
}
Dog类
package demo02.clock.jiekou;
/**
* Created by lulei on 2019/4/9.
*/
public class Dog implements Animal {
public void eat() {
System.out.println("爱吃骨头!");
}
public void speak() {
System.out.println("汪!汪!汪!");
}
}
Test类
package demo02.clock.jiekou;
/**
* Created by lulei on 2019/4/9.
*/
public class Test {
public static void main(String[] args) {
Animal cat = new Cat();
Animal dog = new Dog();
System.out.println("-------cat-------");
cat.eat();
cat.speak();
System.out.println("-------dog-------");
dog.eat();
dog.speak();
}
}
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/270241.html