1、介绍
对规则进行声明
2、使用场景when
一个类中所有方法都是抽象的(那么该类的唯一作用就是声明规则),通常改写为接口
3、定义
interface 接口 ;implement 实现类
4、使用where
接口不允许实例化(那么,我们需要注意的就是它的实现类)。原因:接口里面全部是抽象方法,实例化没有意义(调用没有逻辑的抽象方法)
5、接口的实现类
5-1、重写所有抽象方法(推荐)
5-2、抽象类(不推荐的原因:抽象类也不能实例化)
6、接口中的成员成员特点
6-1、成员变量
只能是常量 默认被:public static final修饰(一般这样写,虽然这三个谁前谁后都没有关系)
public class Test{
public static void main(String[] args){
// InterA.NUM = 20;//报错,final 一旦赋值,不可修改
}
}
public interface InterA{
//int NUM = 10;
public static final int NUM = 10;
}
6-2、成员方法
只能是抽象方法 默认被: public abstract修饰
package a
public interface InterA{
public abstract void show();
// void show(){}//报错,接口中只能是抽象方法
}
package b
public class Test{
public static void main(String[] args){
InterA.show();//不报错,说明是public 的
}
}
6-3、构造方法
没有构造器
实现类的构造器中的super();属于Object的,因为Java中Object是所有类的祖宗
public interface InterA{
// public InterA(){}//报错
public abstract void show();
}
public class ImplA implements InterA{
public ImplA(){
super();//不报错哦,因为继承了Object
}
}
7、类和接口之间的各种关系
7-1、类与类
继承关系,只允许单继承,不允许多继承,支持多层继承
7-2、类与接口
实现关系,可以单实现,也可以多实现,甚至可以既继承又实现
class A{}
interface InterA{}
interface InterB{}
class ImplA extends A implements InterA, InterB{
}
7-3、接口与接口
继承,允许多继承,单继承
8、接口和抽象类的区别(重点)
8-1、成员区别:
8-1-1、成员变量
接口:只能是常量 默认: public static final
抽象类:没有要求
8-1-2、成员方法
接口:只能是抽象方法 默认: public abstract
抽象类:既可以抽象方法,也可以有普通方法
8-1-3、构造方法
接口:没有构造方法
抽象类:有构造方法,方便子类调用
8-2、设计区别:
接口:规则(特性),进行扩展、组合
抽象类:提取共性
9、接口的版本升级
9-1、jdk8以后
9-1-1、接口中可以有默认方法
原因:解决接口升级的问题(需要更多的方法,但是不想影响实现类)
格式:public default void show(){},其中public可以省略,default不能省略,因为接口中的所有方法默认public
public default void show(){}
default void show(){}
注意:
默认方法,不是抽象方法,可以不被实现类重写
当实现类实现了多个接口,且有相同的默认方法时,必须重写
9-1-2、接口中可以有静态方法
格式:public static void work(){},其中public可以省略
public static void work(){}
static void work(){}
注意:
静态方法只能通过接口名进行调用,其实现类和实现类的对象不能调用
9-2、jdk9以后
9-2-1、接口中可以有私有方法
格式1:private void show(){},private不能省略
格式2:private static void show(){}
private void show(){}
private static void show(){}



