所以,不是JAVA设计规范规定了接口的变量必须常量.而是如果接口中的变量是非常量.此变量就毫无意义.故必须是常量才有意义.
USB接口用过吧.国际组织定义USB接口的长度和宽度.厂商实现该接口,如IBM生产了一种,HP生产了一种,如果定义的USB接口的长度和宽度不是常量的话,这两个接口能统一的用吗.
国际组织定义USB接口的长度和宽度,就是你说的接口的变量.
[该贴被boby2046于2007年08月21日 15:30修改过]
请问java中定义接口和抽象类的关键字分别是什么?
还有,在接口中确实可以定义一个普通的变量,但是你必须给这个变量赋初值,因为系统会隐含的将这个变量声明为final类型的变量,也就是常量了。也就是说,不管你在接口中怎么定义一个变量,系统都会默认为fianl的常量。
接口就是现实中的“协议”或“规则”。
国家法律就是规则,法律规定抢劫判10年(即接口中定义一个变量值为10),你能改动法律吗?
赞同,
楼下好多人被你蒙了 !!^_^^_^
abstract class Demo {
abstract void method1();
abstract void method2();
…
}
使用interface的方式定义Demo抽象类的方式如下:
interface Demo {
void method1();
void method2();
…
}
在abstract class(可以看作是abstract 方法和非abstract方法的集合) 方式中,Demo可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface(可以看作是是abstract 方法(但在interface没有显示的写出)和常量(默认为public static final)定义的集合)方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员,这是为了修正C++多重继承出现的问题,多重继承中包括多个父类之间可能出现重复的成员变量,在引用时就会出现问题),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。
(这是我看了一篇interface与abstract的文章后,并作出了一点修改,若有不足的地方,请大家多多指教!)
[该贴被HONDO于2008-03-04 16:53修改过]