基本介绍:
接口就是给出一些没有实现的方法,封装到一起,当某个类要使用的时候,在根据具体情况把这些方法重写出来。
语法:
interface 接口名 {
属性
方法(①,抽象方法;②默认实现方法(要用default修饰);③静态方法
} //在jdk 7.0以前,接口里的所有方法都没有方法体,即都是抽象方法;
//在jdk8.0以后可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现
class 类名 implements 接口 {
该类自己的属性;
该类自己的方法
必须实现接口的抽象方法;
}
注意事项:
1,接口不能被实例化;
2,接口中的所有方法是public方法,接口中的抽象方法可以不用abstract修饰,系统默认是public和abstract;
3,一个普通类实现接口,就必须将接口的所有方法实现,可以使用alt + enter来快速实现接口方法;
4,抽象类实现接口,可以不实现接口的抽象方法;
5,一个类可以同时实现多个接口:
interface A { void hi() ; }
interface B { void say () ; }
class C implement A,B {
public void hi(){ }
public void say (){ }
}
6,接口中的属性只能是final的,而且是 public static final 修饰。如: int a = 1;实际上是 public static final int a = 1;且属性必须初始化;
7,接口中的属性的访问形式:接口名 . 属性名
8,接口不能继承其他类,可以继承多个别的接口;
interface D extends A,B { }
9,接口的修饰符只能是 public 和 默认,这点和类的修饰符是一样的;
继承和接口的区别:
1,继承的价值主要在于:解决代码的复用性和可维护性。
接口的价值主要在于:设计,设计好各种规范(方法),让其他类去实现这些方法。即更加的灵活。
子类继承了父类就自动拥有了父类的功能,如果子类想要扩展功能可以通过实现接口的方式扩展,接口可以理解为是对java单继承机制的补充;
2,接口比继承更加灵活:继承是满足is - a 的关系,而接口只需满足like - a 的关系;
3,接口在一定程度上实现代码解耦。(即:接口规范性 + 动态绑定)