最近在做项目的时候遇到了一个关于Interface定义变量的问题,感觉有点模糊,所以研究并总结了一些Interface中定义变量的注意事项,欢迎批评指正。
   
    
    
    1.在Interface中定义变量的时候要将变量定义成public static final 类型。当然,你的变量也可以不定义成static类型,因为成员变量被定义成了public型,实例化的对象可以直接访问。
   
    
    
   
    
    
    2.接口是可以继承接口的,带有成员变量的接口也可以被继承,但是不能对成员变量做修改。
   
3.由于接口中的成员变量不能被修改,所以在定义接口的时候要为其赋初值。
    
    
    4.成员变量在定义的时候可以不加任何修饰符,但是系统在编译的时候会将其默认为static final类型,所以为了程序的可读性,建议加上修饰符。
   
    
    
    5.关于Interface中成员变量的访问问题:
   
    
    
    第一种:接口.成员变量
   
    
    
    第二种:子接口.成员变量
   
    
    
    第三种:扩展类.成员变量
   
    
    
    第四种:扩展类的实例.成员变量
   
    
    
    另附个人的一个example:
   
自定义的接口,继承接口的接口,实现前两个接口的类
    public interface I {
    
    
    
    
    //从配置文件中获取num值
    
    
    
    public final int num = Get.getProperties();
    
    
    
    
    
    
    public int get();
    
    
    
    }
    interface B1 extends I{
    
    
    
    
    
    
    
    public void set(int num);
    
    }
    class T implements B1{
    
    
    
    
    @Override
    
    
    
    public int get() {
    
    
    
    
    // TODO Auto-generated method stub
    
    
    
    return num;
    
    
    
    //return 0;
    
    
    
    }
    
    
    
    
    
    
    public void set(int num){
    
    
    
    
    //this.num = num;
    
    
    
    }
    
    }
    
   
测试类
    public class Test {
    
    
    
    
    
    
    
    public static void main(String[] args) {
    
    
    
    
    
    
    
    T a1 = new T();
    
    
    
    
    
    
    System.out.println(a1.get());
    
    
    
    
    
    
    T a2 = new T();
    
    
    
    
    
    
    System.out.println(a2.get());
    
    
    
    
    
    
    System.out.println(B1.num);
    
    
    
    }
    
    
    
    
    }
    
   
次类时用来读取配置文件的,实际中很常用
    public class Get {
    
    
    
    
    
    
    
    public static int getProperties(){
    
    
    
    
    
    
    
    int num=0;
    
    
    
    
    
    
    Properties p = new Properties();
    
    
    
    try {
    
    
    
    
    //用此种方法得到文件流系统会报错,具体原因未深究
    
    
    
    //InputStream ip = new FileInputStream(“com\\sun\\demo\\my.properties”);
    
    
    
    //获取当前文件下的制定properties
    
    
    
    InputStream ip = Get.class.getResourceAsStream(“my.properties”);
    
    
    
    
    
    
    p.load(ip);
    
    
    
    
    
    
    if(p.containsKey(“num”)){
    
    
    
    
    
    
    
    String temp = p.getProperty(“num”);
    
    
    
    
    
    
    num = Integer.parseInt(temp);
    
    
    
    }
    
    
    
    
    
    
    ip.close();
    
    
    
    
    
    
    
    
    
    } catch (FileNotFoundException e) {
    
    
    
    
    // TODO Auto-generated catch block
    
    
    
    e.printStackTrace();
    
    
    
    } catch (IOException e) {
    
    
    
    
    // TODO Auto-generated catch block
    
    
    
    e.printStackTrace();
    
    
    
    }
    
    
    
    
    
    
    return num;
    
    
    
    
    
    
    }
    
    
    
    
    }
    
   
 
