接口就是给出一次额没有实现的方法,封装到一起,到某个类要使用的时候,根据具体的情况把这些方法写出来。
语法:interface 接口名{
属性+方法
}
class 类名 implements 接口{
自己的属性//方法
}
注意:在jdk7以前都没有接口中的方法都没有方法体,而在8.0之后可以有静态方法,默认方法(需要用default进行标记),也就是说接口中有方法的具体实现,在接口中抽象方法可以进行省略。
public interface InterfaxeTest {
public int a=10;
public int sum();
default public void hi(){
System.out.println("你好");
}
public static void ok(){
System.out.println("OK");
}
}
接口的简单用法
规范我们的书写,方便调用。比如,我们现需要写出三个类,分别链接mysql数据库,oracle数据库。我们程序员1写的链接mysql数据库链接方法定义为f1,断开为f2。而程序员2写的链接oracle数据库的方法为connect,与close方法。这样会导致我们使用不同的数据库时,调用函数的麻烦,但是当我我们使用接口,就可以规范每一个的命名,举个简单例子:
public interface DBInterface {
public void connect();
public void stop();
}
public class Oracle implements DBInterface{
@Override
public void connect() {
System.out.println("链接oracle数据库");
}
@Override
public void stop() {
System.out.println("断开链接oracle数据库");
}
}
public class MySql implements DBInterface{
@Override
public void connect() {
System.out.println("链接mysql数据库");
}
@Override
public void stop() {
System.out.println("断开链接mysql数据库");
}
}
public class Test {
public static void main(String[] args) {
MySql mySql = new MySql();
mySql.connect();
mySql.stop();
}
}
接口的注意事项
接口本身并不能被实例化接口中所有方法都为public方法,接口中的抽象方法,可以不用abstract修饰一个类继承该接口,就必须实现接口的所有方法一个类可以实现多个接口
public class Oracle implements DBInterface,InterfaxeTest{
@Override
public void connect() {
System.out.println("链接oracle数据库");
}
@Override
public void stop() {
System.out.println("断开链接oracle数据库");
}
@Override
public int sum() {
return 0;
}
@Override
public void hi() {
InterfaxeTest.super.hi();
}
}
接口中的属性只能是final,而且是public static final修饰符,比如int a=1;实际上为public static int a=1;
证明:
我们在刚才的接口中定义int a=0;
在main方法中输出如下;如果不报错并且可以正常输出,说明这个为public并且为static,我们并没有创建实例化对象。而final只需要我们尝试改变以下值即可。
public class Test {
public static void main(String[] args) {
System.out.println(MySql.a);
}
}
做个练习:
public class Test {
public static void main(String[] args) {
System.out.println(DBInterface.a);
System.out.println(MySql.a);
MySql mySql=new MySql();
System.out.println(mySql.a);
}
}



