1.接口中成员的特点
- 成员变量:
- 只能是常量
- 默认修饰符:public static final
- 构造方法:
- 没有
- 成员方法:
- 只能是抽象方法
- 默认修饰符:public abstract
- JDK7以前:接口只能定义抽象方法。
- JDK8的新特性:接口中可以定义与方法体的方法。
- JDK9的新特性:接口中可以定义私有方法。
注意: 接口中的方法默认为抽象方法,即没有方法体。接口中的成员变量默认为public staticfinal类型可以在接口中定义常量。在Java 8及以上版本,接口中还可以包含默认方法和静态方法,用来提供默认的方法实现或提供一些工具方法。
接口的定义方式:
public interface MyInterface {
// 声明抽象方法(没有方法体)
void method1();
// 声明抽象方法可以带参数
void method2(int parameter);
// 声明抽象方法可以有返回值
String method3();
// 接口中的成员变量默认为 public static final
int CONSTANT = 100;
// 接口中可以包含默认方法(在Java 8及以上版本)
default void defaultMethod() {
System.out.println("This is a default method.");
}
// 接口中可以包含静态方法(在Java 8及以上版本)
static void staticMethod() {
System.out.println("This is a static method.");
}
}
接口定义了一种规范或协议,实现该接口的类必须实现接口中定义的所有方法。实现接口的类使用implements
关键字,而不是 extends
,并且需要提供接口中所有抽象方法的具体实现。
2.接口和类之间的关系
1)类和类的关系
继承关系,只能单继承,不能多继承,但是可以多层继承
2)类和接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口(如果实现的多个接口中有相同的方法,在类中只需要定义一次)
3)接口和接口的关系
继承关系,可以单继承,也可以多继承
细节:如果实现类实现了最下面的子接口,那么就需要重写所有的抽象方法
用以下代码来解释接口和接口的关系:
定义接口1:
public interface Inter1 {
public abstract void medthod1();
}
定义接口2:
public interface Inter2 {
public abstract void medthod2();
}
定义接口3,继承接口1、接口2,并定义自己的方法:
public interface Inter3 extends Inter1,Inter2{
public abstract void medthod3();
}
定义测试类InterImp1,实现接口3:
如图所示,需要将接口1、接口2、接口3的所有抽象方法实例化(重写),即如果实现类实现了最下面的子接口,那么就需要重写所有的抽象方法。
测试类InterImp1的代码如下:
public class InterImp1 implements Inter3{
@Override
public void medthod1() {
// 具体执行语句
}
@Override
public void medthod2() {
}
@Override
public void medthod3() {
}
}