接口
307字约1分钟
2024-08-10
比抽象类还要抽象的纯抽象接口,因为它连字段都不能有。因为接口定义的所有方法默认都是 public abstract
的,所以这两个修饰符不需要写出来(写不写效果都一样)
当一个具体的类去实现一个接口时,需要使用 implements
关键字
interface Person {
public abstract void say();
}
class Student implements Person {
@Override
public void say() {
System.out.println("我是人类");
}
}
比较
abstract class | interface | |
---|---|---|
继承 | 只能 extends 一个 class | 可以 implements 多个 interface |
字段 | 可以定义实例字段 | 不能定义实例字段 |
抽象方法 | 可以定义抽象方法 | 可以定义抽象方法 |
非抽象方法 | 可以定义非抽象方法 | 可以定义default方法 |
接口继承
一个接口可以继承另外一个接口。接口之间的继承使用 extends
,它相当于扩展了接口的方法
interface Hello {
public abstract void sayHello();
}
interface Person {
public abstract void say();
}
default方法
在接口中,可以定义 default
方法,默认实现,子类实现接口不用覆写 default
方法
interface Person {
public abstract void say();
default void sayHello() {
System.out.println("say hello");
}
}
class Student implements Person {
@Override
public void say() {
System.out.println("我是人类");
}
}