最近才知道java接口中不可以声明变量,只可以定义static final类型的常量。上网搜了一下,总结如下:
1. java 接口是一个纯粹的抽象类,不提供任何具体的实现,只是提供了一个协议,实现它的子类共同遵守这份协议。接口A中的属性a如果可以定义为静态变量,那么就可以直接通过A.a=xxx;的方法直接修改该属性,而这样做是不安全的。因为接口中的属性是所有实现它的子类共享的,是全局变量,每一个更改都会影响所有的子类。
2.接口是概念级抽象,它不表示任何实体,而属性是用于表示某个对象特征,如果接口拥有属性,那岂不违背了接口高度抽象的原则。
3.java设计原则中有一项是面向抽象编程,即面向接口编程。接口是概念的抽象,它表示可以做什么,但是具体功能的实现要通过它的子类来完成。所以在编程过程中我们可以将方法尽量向上转移,即实现同一接口的子类的共同方法放在接口中;而属性变量尽量下移,即将属性变量放在具体的实现子类中,因为属性是表征具体对象特性的。
1. java 接口是一个纯粹的抽象类,不提供任何具体的实现,只是提供了一个协议,实现它的子类共同遵守这份协议。接口A中的属性a如果可以定义为静态变量,那么就可以直接通过A.a=xxx;的方法直接修改该属性,而这样做是不安全的。因为接口中的属性是所有实现它的子类共享的,是全局变量,每一个更改都会影响所有的子类。
2.接口是概念级抽象,它不表示任何实体,而属性是用于表示某个对象特征,如果接口拥有属性,那岂不违背了接口高度抽象的原则。
3.java设计原则中有一项是面向抽象编程,即面向接口编程。接口是概念的抽象,它表示可以做什么,但是具体功能的实现要通过它的子类来完成。所以在编程过程中我们可以将方法尽量向上转移,即实现同一接口的子类的共同方法放在接口中;而属性变量尽量下移,即将属性变量放在具体的实现子类中,因为属性是表征具体对象特性的。