so true

心怀未来,开创未来!
随笔 - 160, 文章 - 0, 评论 - 40, 引用 - 0
数据加载中……

[改编]final关键字

1. final变量不能被改变; 
当利用final修饰一个属性(变量)的时候,此时的属性成为常量。
注意JAVA命名规范中常量全部字母大写:
final int AGE=10;
常量的地址不可改变,但在地址中保存的值(即对象的属性)是可以改变的。

final变量是在整个类被创建时候被赋值,之后就不能改变了。
对于final变量,如果在声明的时候和构造的时候均不进行赋值,编译出错。

对于利用构造方法对final变量进行赋值的时候,此时在构造之前系统设置的默认值被覆盖。

常量(这里的常量指的是实例常量:即成员变量)赋值:
①在初始化的时候通过显式声明赋值。final int x=3;
②在构造的时候赋值。
class A{
 final int x;
 public A(){
 x=4;
 }
}

2. final方法不能被改写; 
利用final定义方法:这样的方法为一个不可覆盖的方法。
下面这样就会编译出错:
class A{
 public static void max(){
  System.out.println("A:max()");
 }
}
class B extends A{
 public void max(){
 }
}
为了保证方法的一致性(即不被改变),可将方法用final定义。
如果在父类中有final定义的方法,那么在子类中保证调用的是同一个父类方法。
如果一个方法前有修饰词private或static,则系统会自动在前面加上final。即private和static方法默认均为final方法。

注:类的修饰符仅限于abstract、final、public。Final和abstract永远不会同时出现。

3. final类不能被继承; 
final修饰类的时候,此类不可被继承,即final类没有子类。这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生。
String 类就是final类 ,目的是提供效率保证安全。

posted on 2008-01-01 14:16 so true 阅读(274) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: