商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

再读Think in Java-高级篇



    5,final关键词

    final的三种用途:数据(data),方法(method),类(class)常量用于下列情况:1,编译时的常量,这样就在也不能更改了。Java里这种变量必须是primitive的,而且要用final关键词表示。2,运行时初始化的值,这个值你以后就不想修改了。

    一个被static和final修饰的数据成员只会占据一段内存,并且不可以修改。对于primitive来说,final会将这个值定义成常量,当一个final不是指primitive而是一个对象的reference的时候,final的意思是这个reference是一个常量,一旦将这个reference连到某个对象后,那么他再也不能指向别的对象了。但是这个对象是可以修改的,不是常量(听起来挺好笑的)。Java里通常约定,
被初使化为常量的final static的primitive类型的名字全都用大写,词与词之间用下划线分开。

    final方法,有两个作用,第一,是为方法加锁,禁止派生类进行继承,如果你希望某个方法在继承当中保留下来,并且不被重写,你就可以使用这个方法。第二,就是效率,如果方法是final的,那么编译器会把调用转换成“内联的”。不过final的这个作用不怎么常用,而常常被用来明确的表示要禁止重写的场合。其实private 方法也隐含了final的意思,由于你不能访问private 方法,所以你也不能重写它。
    final类,把整个类定义成final的,那么这个类就不允许被继承了,String类就是一个final的类。

    6,初始化和类的装载
    类的装载,是在第一次创建这个类的对象的时候,但是在访问static数据和static方法也会装载。第一次使用static数据的时候也是static数据初始化的时候,static对象和static代码段会按照字面顺序初始化的。下面就用一个流程图来展示下:java编译器先访问派生类的mian(),装载派生类—基类—基类(static)变量初始化—派生类(static)变量初始化.类装载结束后,就可以创建对象了。首先对象的primitive被设为缺省值,reference被设为null,然后调用基类的构造函数,你也可以使用super来指定调用基类那个构造函数(这是派生类里构造函数要做的第一件事情)。
1 2 3 4
【内容导航】
第1页: 隐藏实现 第2页: 复用类
第3页: 用合成还是继承 第4页: final关键词
©版权所有。未经许可,不得转载。
[责任编辑:赵恒]