1、接口是一种公共的规范标准,只要符合标准,就可以大家通用。
2、定义接口的格式:public interface 接口名{//接口内容}
3、接口中可以包含的方法:
Java7:常量、抽象方法
Java8:默认方法、静态方法
Java9:私有方法。
4、接口中的抽象方法,修饰符必须是public abstract,这两个修饰符可以选择性的省略,但是不能写其他的修饰符。
5、接口使用的方法:
接口不能直接使用,必须有一个实现类来实现接口。
Public class 实现类名称 implements 接口名称{//。。。}
接口的实现类必须重写接口中的所有抽象方法。
6、Java8开始接口可以定义默认方法:public default 返回值类型 方法名(参数列表){//方法体}(public可以省略,但是default不能省略。)。默认方法用于解决接口升级的问题。默认方法会继承给接口实现类,也可以被实现类重写。
7、Java8开始接口中可以定义静态方法:public static 返回值类型 方法名称(参数列表){//方法体}(public可以省略,但是static不能省略。)。接口名.方法名()使用,不能通过实现类调用。
8、Java9开始接口中可以定义私有方法:
普通私有方法:private 返回值类型 方法名称(参数列表){//方法体},用于解决多个默认方法之间重复代码的问题。
静态私有方法:private static 返回值类型 方法名称(参数列表){//方法体},用于解决多个静态方法重复代码的问题。
私有方法只能被自己调用,不能被实现类或其他类调用。
9、接口中也可以定义成员变量,但是必须用public static final三个关键字修饰,其实就是一个常量。格式:public static final 数据类型 常量名(建议完全大写,单词之间用下划线分隔) = 数据值(必须赋值);这三个修饰关键字可以省略不写,但默认存在。使用时直接通过接口名称.常量名称来使用。
10、接口中不能有静态代码块,也不能有构造函数。
11、一个类可以同时实现多个接口,如果多个接口中有重复的抽象方法,实现类只需重写一次即可。如果多个接口中有重复的默认方法,实现类必须对冲突的默认方法进行重写。
12、一个类的父类方法和实现的接口类的默认方法重名冲突,则默认优先继承父类的方法(即继承优先于实现)。
13、接口与接口之间是多继承的,可以继承多个父类接口,多个父接口之间可以有重复的抽象方法,但是如果多个父类接口中有默认方法重复,子接口必须对默认默认方法进行重写,并且带着default关键字修饰。
1、一个子类(实现类)继承(实现)了父类(接口),所以子类也可以看成一个父类,可以用父类引用指向(接受)一个子类对象。此时通过父类引用来调用方法时,优先使用new的对象中的方法(即new的是谁,优先用谁,没有则向上查找);通过父类引用来调用成员变量时,优先使用变量类型的成员变量(即初始化对象时,等号左边是谁,优先用谁的成员变量),间接通过成员方法访问成员变量时,看该方法属于谁,就优先用谁,没有则向上找。
2、多态的好处:对象的上下转型,在方法的参数列表中使用父类接收,传递的实参是子类,方法体中使用父类引用操作子类方法及成员变量(向上转型一定是安全的,向下转型不一定安全)。
3、为了防止向下转型时出现错误,可以通过instanceof关键字来进行类型判断。
格式:对象 instanceof 类名称,判断前面的对象能不能当作后面类型的实例,返回值是一个Boolean值。
