接口
接口的特点:
1、接口文件最后同样也会被编译器编程成---服务接口.Class的字节码文件.
2、接口跟抽象类一样,同样不能被实例化.
3、接口中的所有方法都只能定义成抽象方法,不能拥有方法体.
4、接口中的所有方法,访问修饰符默认就是public,即便不写也是public.
5、接口中不能拥有构造器,接口中不能拥有初始块包括静态初始块.
6、接口不能定义“成员变量”,只能定义公开的,并且是静态的常量.
7、接口中可以定义无线个常量,可以定义无限的抽象方法(理论上).
8、接口在使用上来将不能被实例化,所有的抽象方法都必须由接口的实现类来实现.
类不能继承接口,只能实现接口.
类只能单继承,但是可以多实现.接口之间才用“逗号”间隔.
接口方法中,可以不写public,以及abstract修饰符,
不写,编译器会自动给我们添加上,public--abstract.
在定义常量式,可以写成public static final
也可以写成: static final也
可以写成final
甚至还可以直接去掉final
使用接口的原则:
使用接口解决多继承.
使用接口为外部类添加功能.
以面向对象的角度考虑,将一个类与身自来的特征和行为和依赖于外部的可选的特征和行为分离,让类尽可能的单纯,让继承体系更加丰富,让我们在设计程序的时候,不在关注具体的类,而是关注具体的类,而是分离关注类上拥有那些接口所定义的能力,从而做到程序设计时,类类的直接关系,变换为类--接口--类,这种变换关系,也被称为"解耦".
接口和抽象类的区别
语法不同、定义不同、相同都不能实例化.
接口可以多实现多继承,抽象类只能单继承.
接口里面放由外部附加给类的东西,抽象是与生俱来的东西.
JDK1.8之后新特性
1、在接口中可以添加非抽象方法,但是需要使用default关键字来声明非抽象方法.
但此时的default已经不再是一个访问修饰符,而真正的访问修饰符,依旧还是public.
2、接口中可以使用static声明静态方法,但是必须要有方法体的实现 "{}" .