访问修饰符 interface 接口名{
常量;
抽象方法;
默认方法; // jdk8 default 关键字修饰的方法
静态方法; // jdk8
静态内部类;// jdk8
}
- 接口定义的关键字 interface
- 接口中的所有成员默认是public
- 常量默认是 public static final
- 抽象方法默认是 public abstract
- 实现接口的关键字 implements, 一个实现类可以实现多个接口
- 接口不能被实例化
- 普通的实现类要实现接口中的所有抽象方法,但是实现类是抽象类,可以实现部分抽象方法
- 接口可以多继承
- 静态方法 子接口和实现类不能被继承,也就是直接使用,而是要接口名调用静态方法
- 静态常量可以被继承
- 一个实现类实现多个接口
- 多个接口中有同名的成员变量(其实是静态变量)可用通过接口名称调用进行区分。
- 多个接口中有同名的静态方法,可用通过接口名称调用进行区分。
- 多个接口中有同名的默认方法,需要在实现类中统一重写
- 多个接口中有同名的抽象方法,需要在实现类中统一重写,也可以分别实现
package cn.java.money.demo2;
public interface IA {
double PI = 3.14;
static void sf() {
}
default void df() {
}
default void df2() {
}
void af();
}
package cn.java.money.demo2;
public interface IB {
double PI = 3.14;
static void sf() {
}
default void df() {
}
void af();
}
package cn.java.money.demo2;
public class SimpleImpl2 implements IA, IB {
//分别实现
IA a = new IA() {
@Override
public void af() {
}
};
IB b = new IB() {
@Override
public void af() {
}
};
//规定:多个接口中有同名的默认方法,需要在实现类中统一重写
// 没有同名的默认方法是不需要重新的
@Override
public void df() {
//多个接口中有同名的成员变量(其实是静态变量)可用通过接口名称调用进行区分。
System.out.println(IA.PI);
System.out.println(IB.PI);
// 多个接口中有同名的静态方法,可用通过接口名称调用进行区分。
IA.sf();
IB.sf();
}
@Override
public void af() {
}
public static void main(String[] args) {
SimpleImpl2 simpleImpl2 = new SimpleImpl2();
simpleImpl2.a.af();
simpleImpl2.b.af();
}
}