您的位置:首页 > 其它

static 和 final 回顾

2016-04-28 22:57 260 查看
一、static

         1.被static修饰的属性:

                  该属性可以被另一个类直接调用(当然也受访问权限的影响),而不用初始化该类,static属性只能是class 的成员,

              不能在方法中用static修饰所定义的属性 。

          2.被static修饰的方法:

                  该方法中不能存在非static修饰的属性和非static的方法,原因浅解释就是  避免出现未被初始化的对象或属性,相反,

              非static修饰的方法,是可以调用有static修饰的属性或static修饰的方法的, 有一个比较特殊的static方法,就是static块,

              static{   };   该方法会在程序执行是最先调用。

         3.被static修饰的内部类(注:主类不能被static修饰):

                静态内部类是指在一个类的内部,又定义了一个用static修饰的类。可以用C中的结构体内嵌结构体来理解。首先,用内

               部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放

               这个类;

         4.继承有static修饰的方法和属性的类:

               static修饰的方法是不能被重写的,但属性可以被修改,如果两个都存在静态块,会先调用父类,再到子类的静态块。

       

            5.简单的static在内存位置理解:<
4000
/p>
                        01.栈    02.堆   03.全局区

                        static就在  全局区(静态区)(static)全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初

                  始化的全局变量和未初始化的静态变量在相邻的另一块区域,被static修饰的,拥有固定内存,调用效率高,但是不会自动回收。

                   

二、final

                 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和 

             变量。你可能出于两种理解而需要阻止改变:设计或效率。

             final类不能被继承,没有子类,

             final类中的方法默认是final的。

             final方法不能被子类的方法覆盖,但可以被继承。

             final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

             final不能用于修饰构造方法。

             注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的

        更詳細的請看:http://lavasoft.blog.51cto.com/62575/18771/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: