Java中接口

基本介绍

接口就是给出一次额没有实现的方法,封装到一起,到某个类要使用的时候,根据具体的情况把这些方法写出来。

语法:interface 接口名{

属性+方法

}

class 类名 implements 接口{

自己的属性//方法

}

注意:在jdk7以前都没有接口中的方法都没有方法体,而在8.0之后可以有静态方法,默认方法(需要用default进行标记),也就是说接口中有方法的具体实现,在接口中抽象方法可以进行省略。

1
2
3
4
5
6
7
8
9
10
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方法。这样会导致我们使用不同的数据库时,调用函数的麻烦,但是当我我们使用接口,就可以规范每一个的命名,举个简单例子:
1
2
3
4
5
6
public interface DBInterface {
/**定义链接方法*/
public void connect();
/**定义关闭方法*/
public void stop();
}
1
2
3
4
5
6
7
8
9
10
11
public class Oracle implements DBInterface{
@Override
public void connect() {
System.out.println("链接oracle数据库");
}

@Override
public void stop() {
System.out.println("断开链接oracle数据库");
}
}
1
2
3
4
5
6
7
8
9
10
11
public class MySql implements DBInterface{
@Override
public void connect() {
System.out.println("链接mysql数据库");
}

@Override
public void stop() {
System.out.println("断开链接mysql数据库");
}
}
1
2
3
4
5
6
7
8
public class Test {
public static void main(String[] args) {
MySql mySql = new MySql();
mySql.connect();
mySql.stop();
}

}

接口的注意事项

  • 接口本身并不能被实例化
  • 接口中所有方法都为public方法,接口中的抽象方法,可以不用abstract修饰
  • 一个类继承该接口,就必须实现接口的所有方法
  • 一个类可以实现多个接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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只需要我们尝试改变以下值即可。

1
2
3
4
5
6
7
public class Test {
public static void main(String[] args) {
System.out.println(MySql.a);

}

}

做个练习:

1
2
3
4
5
6
7
8
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);
}
}