1.关键字:interface
2.与类并列的结构
3.
jdk7之前,接口中只能定义全局变量(public static final) 和抽象方法(public abstract);
常量的public static final可以省略
抽象方法的public abstract也可以省略
jdk8中,接口还可以定义静态方法和默认方法
jdk9中,接口还可以定义私有方法
接口中没有构造器!接口不可以实例化
4.类与接口之间的关系:implements(实现)
类实现接口以后,如果实现了接口中的所有抽象方法 ,则此类不是抽象类,可以实例化;否则反之。
5.类可以实现多个接口
class 类名 extends 类名 implements 接口1,接口2
6.接口与接口之间是继承关系,而且是可以多继承
7.接口是可以体现多态性的
创建接口匿名实现类及匿名对象
USB-接口
Computer-类,transferDate-方法名,c为对象名
Flash—USB接口的实现类
Printer—USB接口的实现类
1.创建接口实现类的非匿名对象
Flash flash=new Flash;
c1.transferDate(flash)
2.创建接口实现类的匿名对象
c1.transferDate(new Printer);
3.创建接口匿名实现类的非匿名对象
new USB不是USB的构造器;
USB usb =new USB(){
重写USB中的抽象方法
};
4.创建接口匿名实现类的匿名对象
c1.transferDate(new USB(){
重写方法
});
5.创建抽象类的匿名子类对象
Person p1 new Person(){
重写抽象类中的抽象方法
};
接口新特性
知识点1. 通过接口可以调用其内部静态方法。但是实现类不能调用其静态方法
知识点2. 通过实现类可以调用接口的默认方法
知识点3. 类中方法不能用default。一个类如果实现了多个接口,那么接口同名同参的方法必须重写,否则报异常---->接口冲突
知识点4. 如果子类或抽象类继承的父类和实现的接口中定义了同名同参数的方法,则不会报冲突问题,在子类或抽象类没有重写此方法的情况下,默认调用的是父类中的方法。---->类优先原则;属性的话就没有优先原则,如果继承的父类和实现的接口中有同名变量则输出时会报错,父类中的属性用super./接口的属性用接口.
知识点5. 在实现类中调用接口中重写了的方法,则使用接口.super.方法名