java中接口的定义
接口用关键字interface来定义
public interface 接口名 {
// 常量
// 抽象方法
}
JDK8之前接口中只能是抽象方法和常量
接口不能实例化
接口中的成员都是public修饰的 写不写都是 因为规范的目的是为了公开化
//声明接口
public interface interface_demo {
//接口中只能有常量和抽象方法
//常量
public static final String NAME = "张三";
//抽象方法
public abstract void eat();
}
接口其实就是体现一种规范 |
接口的基本使用
接口是用来被类实现(implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类。
修饰符 class 实现类 implements 接口1, 接口2, 接口3 , ... {
}
实现的关键字:implements
*一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类。
定义接口:
//接口体现规范思想
public interface S_Man {
//定义抽象方法
void eat();
void drink();
}
创建实现类:
//实现类
public class people implements S_Man{ //使用需要重写接口中的方法
//定义 一个名字
private String name;
//创建一个有参构造器
public people(String name) {
this.name = name;
}
@Override
public void eat() {
System.out.println(name+"要按时吃饭");
}
@Override
public void drink() {
System.out.println(name+"要多喝水");
}
}
测试类:
//测试类
public class test {
public static void main(String[] args) {
//接口被类实现
people m = new people("小明");
m.eat();
m.drink();
}
}
执行效果:
接口可以被类单实现 也可以被类多实现(在之前接口后面加个逗号可以继续将另外的接口写入)
接口与接口的多继承关系
类和类的关系:单继承。
类和接口的关系:多实现。
接口和接口的关系:多继承,一个接口可以同时继承多个接口。
接口多继承的作用:
规范合并,整合多个接口为同一个接口,便于子类实现。
例如:
使用extends关键字合并继承了其他接口的功能
实现类只需使用一个Man接口就可以实现三个接口的功能
JDK8接口新增方法
1.默认方法
类似之前写的普通实例方法:必须用default修饰
默认会public修饰 需要用接口的实现类的对象来调用
default void run(){
System.out.println("跑起来————");
}
2.静态方法
默认会public修饰,必须static修饰。
注意:接口的静态方法必须用本身的接口名来调用。
static void uName(){
System.out.println("嗨嗨嗨!");
}
3.私有方法
必须使用private修饰,从JDK 1.9才开始有的
只能在本类中被其他的默认方法或者私有方法访问
private void run(){
System.out.println("私有");
}
接口使用过程中的注意事项
- 接口不能创建对象
- 一个类实现多个接口,多个接口的规范不能冲突
- 一个类实现多个接口,多个接口中有同样的静态方法不冲突。
- 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。
- 一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。
- 一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。