日期:2014-05-20  浏览次数:20801 次

关于类实现借口的问题
Java code
public class TestClass implements I1,I2{

    
    public static void main(String[] args) {
        System.out.println(TestClass.time);
        
    }

}


加入借口I1和I2中存在同名的常量
实现他们的类TestClass中如何加以区分?

------解决方案--------------------
这样会造成 TestClass 类的 同名常量暧昧,应该尽量避免
如果不可避免,那就只能通过接口去调用,不能直接通过实现类调用,如
System.out.println(I1.time);
System.out.println(I2.time);



------解决方案--------------------
应该知道的是接口中的变量默认的是static final类型的
所以你的子类根本不用区分 你的子类中也根本没有这两个变量 这两个变量是属于接口的 就是说实现没实现I1 I2这两个接口都可以用这两个变量
 
并不像类中的变量一样会被继承过来 所以你要用这两个变量 只需要在前面加上接口 也就是LS说的情况

另外java规范中不提倡在接口中定义变量 因为一旦定义 就成了一个契约 为了兼容性 必须一致保持这个变量