public static final?static

Java中常量为何定义为public static final?static 定义的变量有什么做用?static 定义的类有什么做用?
单写写个人一点理解
全部被 final 修饰的量都是常量 也就是该量的值是不变的
,用static主要做用是在类刚加载时就初始化该量的值并给他分配一块共用的内存块存储他的值.

至于static 定义的类有什么做用集自网络比较容易你理解(以下),你也能够百度 static 定义的类 就能获得你要的答案
Java里面static通常用来修饰成员变量函数。但有一种特殊用法是用static修饰内部类,普通类是不容许声明为静态的,只有内部类才能够。被static修饰的内部类能够直接做为一个普通类来使用,而不需实例一个外部类
为何接口要规定成员变量必须是public static final的呢? 
答: 首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是全部实现"模版"的实现类的共有特性,因此它是public 的 ,是全部实现类共有的 .不然具体实现类不能使用该变量,则就没有了定义的意义。 static的缘由是,假如能够是非static的话,因一个类能够继承多个接口,出现重名的变量,如何区分呢?因此必须定义成static的,以便区分。 例如一个类实现了两个不一样的接口,这两个接口中有相同名字的变量定义,示例代码以下: public class MultiInmpl implements InTF, InTFOther{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MultiInmpl m = new MultiInmpl(); //若是实现的接口中有同名的变量,则不能引用 System.out.println(m.str);//str在2个接口中都有定义 } } 以上代码编译错误!!! Multiple markers at this line - The field m.str is ambiguous - Line breakpoint:MultiInmpl [line: 11] - main(String[]) 其次,接口中若是可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却没法操做这些变量,虽然能够直接修改这些静态成员变量的值,但全部实现类对应的值都被修改了,这跟抽象类有何区别? 又接口是一种更高层面的抽象,是一种规范、功能定义的声明,全部可变的东西都应该归属到实现类中,这样接口才能起到标准化、规范化的做用。因此接口中的属性必然是final的。 最后,接口只是对事物的属性和行为更高层次的抽象 。对修改关闭,对扩展(不一样的实现implements)开放,接口是对开闭原则(Open-Closed Principle )的一种体现。 
相关文章
相关标签/搜索