接口的定义:

接口就是抽象方法和常量的集合,从本质上讲,接口是一种特殊的抽象类

1:接口中定义的属性必须是public static final的,而接口中定义的方法必须是public abstract的,因此这些修饰符可以部分或全部忽略。

2:接口中定义的属性的值在实现类中不能被更改。

3:一个类中只能实现某个接口,不能继承某个接口。

4:接口可以继承接口,而且允许继承多个接口,即接口多继承 (一定程度上弥补了java不能多继承)。

5:如果一个类只实现了一个接口的部分方法,则该类必须声明为抽象类。

6:一个类可以在继承一个父类的同时实现一个或多个接口,但extends必须在implements之前。

7:不可以new接口,但可以定义一个接口引用类型的变量并将其指向实现接口对象,达到多态的目的。

接口的作用:

1:通过接口可以实现不相关类的相同行为。

  例如java规定所有可以完成自我复制功能的类都必须实现java.lang.Colneable接口,但该接口缺是空的,该接口中没有任何内容,目的只是为了起个标志作用。

2:接口提供了不同对象进行协作的平台。

  如事件处理

3:接口可以实现多继承,从一定程度上弥补了类只能单继承的缺陷。

4:接口时我们了解一个类功能的重要途径。

  如:java整个容器框架就是以接口的方式建立起来的,实现不同接口的类完成的是不同的功能,接口是我们了解一个类功能的重要途径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
interface It{
int j = 20; // 全称: public static final int j = 20;
public void f(); // 全称: public abstact void f();

}

interface It2{
int i = 20;
void f();
}

interface It3 extends It, It2{ // 接口可以继承接口,而且允许继承多个接口,即接口多继承。
}
/*
class A extends It2{ error 类不能继承接口。

}
*/

class A implements It2{ // implements 不能改为extends。 类只能实现接口。

public void f(){ // public 不可省略。(重写的权限不能低。) 如果方法不是接口中的方法或者只实现接口中的部分方法。 则该类必须是抽象类。

// i = 99; error。 i 为 final类型。

}
}

class B extends A implements It, It2{ // 一个类可以在继承一个父类的同时实现一个或多个接口, 但extends关键字必须在implements之前。
public void f(){

System.out.printf("恒子恒子恒子");

}

public void g(){

}
}

class Interface1{

public static void main(String[] args){
It it;
it = new B();
it.f(); // 多态!!

// it.g(); error 通过接口的引用,只能调用子类从父类继承过来的成员,不能调用子类特有的成员。
// It it = new It(); error。

}
}