Interface
接口是特殊的抽象类
接口更多是像一个标准,让实现类去实现方法
接口中有静态常量和抽象方法、默认方法(Java8之后可以有static和default方法)
- 静态常量(默认修饰符public static final)
- 抽象方法(默认修饰符public abstract)
- 接口中除了抽象方法外还可以有static和default方法(java8之后)
- 接口中不能有构造方法、静态代码块
抽象类里如果只有静态常量或抽象方法,就用接口替代,因为接口解决了类的单继承问题
类 - 接口 之间的关系
- 类-类 :单继承
- 类-接口:多现实
- 接口-接口:多继承
接口中的default方法
- 只有接口中的方法能被default修饰,表示该方法为普通的方法
- 一个类实现了两接口中都有default方法,需要重写default方法
- 实现了接口和继承了父类中都有相同的方法,则父类中的方法的访问修饰符必须高于default,否则仍然需要重写该方法
interface MyInterface1 {
default void m()
{
System.out.println("接口中的m1");
}
}
interface MyInterface2 {
default void m()
{
System.out.println("接口1中的m1");
}
}
abstract class MyAbClass
{
void m1() {
System.out.println("父类中的m1");
}
}
class t extends MyAbClass implements MyInterface1,MyInterface2{
public static void main(String[] args){
new t().m1();
}
@Override
public void m() {
//Todo
}
}