接口(JAVA中独有的)
关键字 interface
- 接口中的属性都是公开静态常量
- 接口中的方法都是公开抽象方法
- 接口中没有构造方法
实现(继承)接口的关键字 implements
- 一个类实现接口,如果这个类不想成为抽象类,就必须实现接口中的所有抽象方法
接口和抽象类的不同?
- 接口之间可以多继承
- 一个类在继承另外一个类的同时,还能实现多个接口(如果这个类不想成为抽象类,就必须实现父类和接口中所有的抽象方法)(子类对象赋值给父类引用,也可以赋值个接口的引用。根据引用的不同可以调用接口中不同的方法)
定义接口的意义和作用?
-
接口可以实现多继承,(生活中的事物,也是多继承的关系。使用多继承,贴近生活)
-
一个类的引用可以强转赋值给没有实现的接口,编译会通过。原因是接口之间是多继承关系。编译器认为强转是有成功的可能。因此会编译通过(拿父子类来说,父类的引用强转为子类的引用是可以编译通过的,原因是两个类是父子类关系,编译器认为强转有可能会成功。而如果两个类不是父子类关系,则不会编译通过,没有强转成功的可能。)
因此强转的两种类型中,有一个是接口,那么强转代码一定会编译通过(原因是接口是多继承关系,代码有成功的可能)
-
JAVA是单继承,理论上并不支持多继承。而接口只是一个次要的类。并不会影响java单继承的简单性。
接口的解耦合
- 接口是一个标准,在接口中只规定了实现这个接口需要实现哪些方法,对实现并没有约定。
- 接口是一个标准,标准出现的原因是对象与对象之间的解耦合;产生解耦合就必须遵循标准 (耦合表示两个对象之间联系的紧密程度,强耦合说明关系紧密,弱耦合说明关系松散)
- 接口作为标准,接口的使用者和接口的实现者分离,从而实现弱耦合。(也使JAVA对数据库的依懒性减少)