因为接口是可以被多重继承的,如果两个接口定义了相同的变量,而一个类又同时实现了这两接口,那是用那个变量的时候就会产生冲突,比如:
public interface A {
int i;
}

public interface B {
int i;
}

public class C implements A,B{
}

那class C中c.i到底是继承至哪个接口呢?

语言规定,只此而已, 接口是类功能的抽象~~如果包含了数据.就不能成为功能抽象了,而成了同等类功能抽象~~

在abstract class(可以看作是abstract 方法和非abstract方法的集合) 方式中,abstract class可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface(可以看作是是abstract 方法(但在interface没有显示的写出)和常量(默认为public static final)定义的集合)方式的实现中,abstract class只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员,这是为了修正C++多重继承出现的问题,多重继承中包括多个父类之间可能出现重复的成员变量,在引用时就会出现问题),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。

接口定义静态常量,关键看你的需求。
当枚举无法实现你的需求时,就需要用到它。

接口定义静态常量,关键看你的需求。
当枚举无法实现你的需求时,就需要用到它。

如果接口中变量的类型是public static ,那么实现该接口的类中只要有一个修改了该变量的值,那么所有的对象的值都会改变,违背了接口作为规范的原则