
一.接口的定义
接口是一种引用的数据类型,接口只是描述应该具备的方法,没有具体的实现,不能实例化。
语法格式
//A为接口名字
interface A{
}
关键字:用interface定义,不在使用class。
二.接口属性和方法的定义
1.接口可以有属性,但由static,final关键字修饰,被称为常量。
2.接口下面的方法全部是抽象方法,没有方法体
3.接口没有构造方法,不能被实例化
interface Net{
//属性的定义 static final 可以省略
int year1 = 2022;
//方法的定义 public也可以省略
public void methods();
}
三.接口的实现
那么怎么去实现一个接口呢?
这就需要一个普通的类来实现了,抽象类我们都学过了,大家知道抽象类中有抽象方法和非抽象方法,其中非抽象方法需要通过普通类去继承并且去重写所有的抽象方法。
接口也需要一个普通的类去实现,实现方式如下:
//A为接口名字
interface A{
}
//B为类名 A为上面的接口名字
class B implements A{
}
用到了implements关键字,完整的如下
interface Supply{
//此类是一个抽象类
void input();
}
class Computer implements Supply{
@Override//对接口中抽象类的重写
public void input() {
System.out.println("电脑连接电源可以充电");
}
我们定义一个Supply接口,接口里面有一个input抽象方法,通过Commputer来实现接口Supply,接口里面的所有抽象类都需要在类中重写,这个Supply接口只有一个抽象类,我们只需要重医这一个即可。
四.接口的作用
那么接口有什么作用呢?
让我们一起来看一下:
- 通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。
- 通过接口可以指明多个类需要实现的方法。
- 通过接口可以了解对象的交互界面,而不需了解对象所对应的类。
对接口的使用有很多注意事项:
- 接口的定义需要用interface关键字
- 接口下面可以有属性,但是用static和final来修饰,被称为常量。
- 接口不同于类里面没有构造方法
- 接口下面全部都是抽象方法
- jdk1.8以后可以有默认的方法,这个默认的方法带有方法体。
- 使用普通的类去实现接口,并且重写所有的抽象方法
- 一个普通的类可以实现多个接口,弥补了单继承的局限性
- 一个接口可以继承另一个接口
五.案例分析
电脑类去实现以下的三个接口。
电源接口
鼠标接口
网络接口
比如上面有三个接口,电脑是一个类,让电脑本身不具备插电源 连网线连鼠标的
只有在电脑类基础之上 去实现三个接口之后,那么电脑就会拥有充电 联网连鼠标这些功能的
代码如下:
interface Supply{
//创建一个input抽象方法
void input();
}
interface Mouse{
//创建一个mouse抽象方法
void mouse();
}
interface Net{
//创建一个internet抽象方法
void internet();
}
class Computer implements Supply,Mouse,Net{
@Override//对抽象方法input进行重写
public void input() {
// TODO Auto-generated method stub
System.out.println("电脑连接电源可以充电");
}
@Override//对抽象方法mouse进行重写
public void mouse() {
// TODO Auto-generated method stub
System.out.println("鼠标插入电脑可以控制电脑");
}
@Override//对抽象方法internet进行重写
public void internet() {
// TODO Auto-generated method stub
System.out.println("电脑可以连接网络进行上网");
}
}
public class Demo9 {
public static void main(String[] args) {
Computer computer = new Computer();
computer.input();//调用input方法
computer.mouse();//调用mouse方法
computer.internet();//调用internet方法
}
}
运行结果如下: