一,接口作用:
1,弥补java不能直接进行多重继承的一种多重继承的机制。
2,扩展已经继承了父类的子类的功能。
------|另一种扩展功能的方法是直接继承另一个父类,但是java只允许单继承。所以需要出现了接口用来弥补这一缺点。实质还是实现多重机制。
二,接口的声明与定义:
1,接口中可以有的成员为:final,static,public修饰的共有静态成员常量;public,abstract修饰的抽象方法(也叫规范)。格式一般固定的。但是由于接口成员的前面修饰一般是固定的那几个修饰,所以可以省略那些修饰。在JVM运行时会自动把那些修饰加上。
2,接口都是抽象的类,所以无须用abstract去修饰interface。
3,修饰接口的关键字是interface,作用等同于class
三,接口的多重机制的实现与注意事项:
1,接口可以同时用extends继承多个接口。
Interface InterPar1{}
Interface InterPar2{}
interface InterSon extends InterPar1,InterPar2{}
注意事项:
-----------|多个父接口中有同名成员变量的问题:
(1),java中允许InterPar1与InterPar2中有两个同名(并且可以不为私有)的成员变量。并且JVM编译并不会报错。但是,在InterSon接口无法直接使用同名的那个变 量 ,因为JVM无法辨别到底是哪个父接口中的这个变量。所以使用这个同名变量时需要加上父接口为前缀。注意,如果其中一个是私有的的话,则不存在 这个问题,因为如果是私有的就无法被继承,根本就没法在子接口中使用。
-----------|多个父接口中有同名成员方法的问题:
(1),java中允许InterPar1与InterPar2中有两个方法签名相同的成员方法。并且JVM编译并不会报错。但是,JVM在处理方法签名相同的方法和处理同名变量时采用 了不同的方式。Java会自动将这两个方法合并为一个方法(甚至谁覆盖谁都无所谓,当然存在一些细微的差别),后面的实现者只需要实现一个就够啦。
2,类只能一个继承一个父类,但是可以同时implements实现多个接口(会出现上面讲到的同名方法的问题)。
提示:这些问题,其实实质还是各个类以及各个类中的不同成员在内存的存储的问题。