定义在interface接口当中的变量必须在定义的时候初始化,而定义在接口的实现类中的实例变量可以不用在定义的时候初始化。定义在interface中的变量严格来说不是实例变量,怎么说呢?首先,我们得理解一下实例变量是什么意思,所谓实例变量就是实例的成员变量,而interface当中的变量的修饰符是这样的:public static final。也就是说你在interface定义一个变量:String usernmae;前面不加public static final,但是它还是public static final的,跟public static final String username;是等价的。既然是static的,那么就不是实例变量,而是类变量。
好了,既然是public static final,那么区别就出来了,你不能在interface当中定义protected,或者private的变量。而其实现类中可以。因为是final的,所以interface中定义的变量不能被改变,它永远都是其初始化时候的值,而其实现类中定义的变量可以不加final,因此可以在其他地方修改变量的值。就是以上那些区别了
interface 是定义接口
接口特点:不能实例化,所以它的变量必须是定义的时候初始化的
implementation是实现接口
特点:实现接口中所有的接口函数,它还是个接口也可能是个类,如果还是接口那就一样了,如果是类
则在类中定义的变量可以是成员变量,也可以是函数内的局部变量,就看你放哪了
接口中定义的变量一定是final类型的,也就是你可以把它理解成一个常量,是不可改变的;而一个类实现了这个接口那么这个类不仅可以调用父类的属性和方法,还可以自己再定义属于这个类的属性和方法。
定义在接口中只能是final类型,无法修改。