java 接口 变量

1、抽象类和接口都不能直接实例化。2、接口和抽象类需要重写被重写里面的所有抽象方法才能使用,3、有抽象方法的类一定要声明为抽象类,抽象类可以没有抽象方法,4、抽象类不能用final关键字修饰,5、接口里面Java8之前只能写抽象方法,Java8之后可以有默认的实现方法,让接口具有很好的扩展性,提高代码复用性。6、接口中的属性必须是public、final、static修饰的静态常量且使用之前需要显示的初始化,例如:publicfinalstaticinta=10;7、接口中不能写static修饰的静态抽象方法,因为静态抽象方法不能被重写,不能通过接口直接调用。

1、浅谈为什么Java接口中不允许定义变量

接口就是提供一种统一的“协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。抽象类是不“完全”的类,相当于是接口和具体类的一个中间层。即满足接口的抽象,也满足具体的实现。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系,可以通过实现接口的对象的行为来修改接口中的属性。

如果接口A中有一个public访问权限的静态变量a.按照Java的语义,我们可以不通过实现接口的对象来访问变量a,通过A.axxx;就可以改变接口中的变量a的值了。正如抽象类中是可以这样做的,那么实现接口A的所有对象也都会自动拥有这一改变后的a的值了,也就是说一个地方改变了a,所有这些对象中a的值也都跟着变了。

2、为什么java接口中定义的变量都是常量?(转

有的人会说了,没有关系,可以通过实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口A中有一个public访问权限的静态变量a。按照java的语义,我们可以不通过实现接口的对象来访问变量a,通过A.axxx;就可以改变接口中的变量a的值了。正如抽象类中是可以这样做的,那么实现接口A的所有对象也都会自动拥有这一改变后的a的值了,也就是说一个地方改变了a,所有这些对象中a的值也都跟着变了。

所以接口中不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。通俗的讲,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。

3、java接口中全局变量如何赋值

Javacodepublicclasstest{/***@paramargs*/publicstaticvoidmain(String[]args){inti;i3;}}这种写法编译是完全通过的,不同的场合赋值的地方也不一样。当这个变量作为一个全局变量使用时,通常是在方法外面声明,方法里面去赋值;如果该变量只是局部使用,一般都是声明赋值同时操作。

未经允许不得转载:获嘉县林达网络有限公司 » java 接口 变量

相关文章