接口定义:一种特殊的“抽象类”,没有普通方法,由全局常量和公共的抽象方法所组成;
1,接口的定义
接口定义用关键字 interface
我们给下实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package
com.java1234.chap03.sec12;
/**
* 定义一个接口A
* @author user
*
*/
public
interface
A {
/**
* 全局常量
*/
public
static
final
String TITLE=
"www.java1234.com"
;
/**
* 定义一个抽象方法 abstract可以省略
*/
public
abstract
void
a();
}
|
注意点:由于接口里的方法都是抽象的,所以abstract可以省略,实际开发一般都是省略的,开发者的习惯;
2,实现接口 可以实现一个或者多个接口
实现接口我们用implements关键字,我们来搞一个测试方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package
com.java1234.chap03.sec12;
public
class
Test
implements
A{
@Override
public
void
a() {
System.out.println(
"a方法"
);
}
public
static
void
main(String[] args) {
Test t=
new
Test();
t.a();
System.out.println(Test.TITLE);
}
}
|
实现接口 ,类里要实现接口里的抽象方法;
运行输出:
a方法
www.java1234.com
为了演示实现多个接口,我们这里再定义一个接口:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package
com.java1234.chap03.sec12;
/**
* 定义一个接口B
* @author user
*
*/
public
interface
B {
/**
* 全局常量
*/
public
static
final
String TITLE2=
"java知识分享网"
;
/**
* 定义一个抽象方法 abstract可以省略
*/
public
abstract
void
b();
}
|
我们修改下Test类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package
com.java1234.chap03.sec12;
public
class
Test
implements
A,B{
@Override
public
void
a() {
System.out.println(
"a方法"
);
}
@Override
public
void
b() {
System.out.println(
"b方法"
);
}
public
static
void
main(String[] args) {
Test t=
new
Test();
t.a();
t.b();
System.out.println(Test.TITLE);
System.out.println(Test.TITLE2);
}
}
|
实现多个接口,中间用逗号隔开,并且实现所有抽象方法:
运行输出:
a方法
b方法
www.java1234.com
java知识分享网
3,继承类和实现接口 先继承,后实现接口
我们先定义一个类C:
1
2
3
4
5
6
7
8
|
package
com.java1234.chap03.sec12;
public
class
C {
public
void
c(){
System.out.println(
"c方法"
);
}
}
|
我们再修改下测试类Test 继承C类,实现A,B接口,这里有个注意点,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
|
package
com.java1234.chap03.sec12;
public
class
Test
extends
C
implements
A,B{
@Override
public
void
a() {
System.out.println(
"a方法"
);
}
@Override
public
void
b() {
System.out.println(
"b方法"
);
}
public
static
void
main(String[] args) {
Test t=
new
Test();
t.a();
t.b();
t.c();
System.out.println(Test.TITLE);
System.out.println(Test.TITLE2);
}
}
|
运行输出:
a方法
b方法
c方法
www.java1234.com
java知识分享网
4,接口的继承 接口可以多继承
我们定义一个D接口 继承A,B接口:
1
2
3
4
5
6
|
package
com.java1234.chap03.sec12;
public
interface
D
extends
A,B{
public
void
d();
}
|
这里再加一个d方法;
我们重新搞一个测试方法 继承C类,实现D接口:
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
|
package
com.java1234.chap03.sec12;
public
class
Test2
extends
C
implements
D{
@Override
public
void
a() {
System.out.println(
"a方法"
);
}
@Override
public
void
b() {
System.out.println(
"b方法"
);
}
@Override
public
void
d() {
System.out.println(
"d方法"
);
}
public
static
void
main(String[] args) {
Test2 t=
new
Test2();
t.a();
t.b();
t.c();
t.d();
System.out.println(Test2.TITLE);
System.out.println(Test2.TITLE2);
}
}
|
运行输出:
a方法
b方法
c方法
d方法
www.java1234.com
java知识分享网