接口
Java大约 1 分钟...
抽象类中,抽象方法本质上是定义接口规范,如果一个类没有字段,所有的方法都是抽象方法,那么就可以将该抽象类改写为接口,用interface
声明
interface Person {
void show();
}
接口比抽象类还要抽象,因为它连字段都不能有,且接口中定义的方法都默认为public abstract
,因此这两个修饰符不必写出
当一个类具体实现一个接口时,必须使用implements
关键字
interface Person {
void show();
}
class Student implements Person {
pubilc void show();
}
类虽然只能继承一个,但是接口可以被实现多个
interface Person {
void show();
}
interface Ok {
void say();
}
class Student implements Person, Ok {
public void show(){}
public void say(){}
}
接口继承
一个接口可以通过关键字extends
继承另一个接口
interface Foo {
void run();
}
interface Bar extends Foo {
void say();
}
Bar 会获得 Foo 中的抽象方法
default 方法
接口中的抽象方法可以被声明为default
,这样实现类就不必覆写default
方法
interface Foo {
String getName();
default void run(){
System.out.println(getName() + "run");
}
}
目的是为了当新增一个方法时,会涉及到修改所有的实现类,如果是default
方法,就无需覆写
警告
接口中的default
方法不能访问字段,而抽象类的方法是可以访问字段的
静态字段
接口也是拥有静态字段的,但是必须为final
interface Person {
public static final int MALE = 1;
}
实际上public static final
是默认的,因此可以简写为:
interface Person {
int MALE = 1;
}