package interface_play;
interface check
{
int lab=20;
void show();
void upgrade();
}
比如这里的lab后面实现这个接口的时候,lab的值也会为0!那接口的赋值有何意义?

解决方案 »

  1.   

    可以输出来看看:
    package csdn.javase.interfaceEx.exe1;
    /**
     * constants in interface
     * @author supercodingman
     * @version 1.0
     *
     */
    public interface Check {
    static final int LAB = 20;//默认为static final的,而且变量习惯用大写
    public void show();    //默认为public 的方法
    public void upgrade();
    }package csdn.javase.interfaceEx.exe1;
    /**
     * constants in interface
     * @author supercodingman
     * @version 1.0
     *
     */
    public class TestCheck implements Check{
    public static void main(String [] args){
    System.out.println(TestCheck.LAB);
    }
    public void show(){}
    public void upgrade(){}
    }
    输出:20至于为什么接口需要有常量,我个人理解为(个人哦,呵呵):
    1、在JavaSE5之前是没有枚举的,这样的情况下可以通过接口来定义多个常量,使得使用了这个接口的类都必须遵循这些常量;
    2、JavaSE5之后有了枚举了,所以一般不需要用接口来定义常量。但是,虽然接口是没有方法实现的,但是接口内部可以定义内部类,而内部类可以使用外层接口的域,所以这样的话也可以为内部类提供常量;
    3、期待高人更完美的答案。^_^
      

  2.   

    lz怎么调用lab的?怎么把它搞成0的?能把代码贴出来看看么
      

  3.   

    接口的所有数据成员都是fianl和static的.
    其目的是为了存储一些可能会用到的常量.
    你说lab的值为0,应该是你定义了同名的变量.