网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > Java精品代码 > 正文

java关键字final修饰符整理

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

1, final成员 :

       当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。下面这段代码演示了这一点:

public class Bat{
final PI=3.14;   //在定义时便给址值
final int i;      //因为要在构造函数中进行初始化,所以此处便不可再给值
final List list;   //此变量也与上面的一样
Bat ( ){
  i=100;
  list=new LinkedList ();
}
Bat(int ii,List l){
  i=ii;
  list=l;
}
public static void main(String args){
  Bat b=new Bat( );
  b.list.add(new Bat( )); ----- final定义的对象引用不可以改变,但是指向的对象内容可以修改,Add,remove等
  //b.i=25;  ----- final定义的基本类型不可以修改变化
  //b.list=new ArrayList( );----- final定义的对象引用不可以改变
  System .out.println("I=" +b.i+" List Type:" +b.list.getClass());
  b=new Bat(23,new ArrayList ());----- final定义的对象引用可以重新
  b.list.add(new Bat());
  System .out.println("I=" +b.i+" List Type:" +b.list.getClass());
  }
}
在main方法中有两行语句注释掉了,如果你去掉注释,程序便无法通过编译,这便是说,不论是i的值或是list的类型,一旦初始化,确实无法再更改。然而b可以通过重新初始化来指定i的值或list的类型.
I=100  List Type:class java.util.LinkedList
I=23   List Type:class java.util.ArrayList

2, 定义方法中的参数为final:

        对于基本类型的变量,这样做并没有什么实际意义,因为基本类型的变量在调用方法时是传值的,也就是说你可以在方法中更改这个参数变量而不会影响到调用语句,然而对于对象变量,却显得很实用,因为对象变量在传递时是传递其引用,这样你在方法中对对象变量的修改也会影响到调用语句中的对象变量.

3, final类 :

       当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类。对于final类中的成员,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了final型的。

final class final {
final String str="final Data" ;
public String str1="non final data" ;
final public void print(){
   System .out.println("final method." );
}
public void what(){
   System .out.println(str+"\n" +str1);
}
}
public class FinalDemo {    //extends final 无法继承
  public static void main(String args){
    final f = new final ( );
    f.what( );
    f.print( ); +
  }
}
从程序中可以看出,final类与普通类的使用几乎没有差别,只是它失去了被继承的特性。

final数据

对primitive来说,final会将这个值定义成常量,在定义时赋值;既是static又是final的数据成员会只占据一段内存,并且不可修改。 对reference来说,final的意思则是这个reference是常量,初始化的时候,一旦将reference连接到某个对象,那么它就再也不能指别的对象了,但这个对象本身是可以修改的,Java没有提供将某个对象当作常量的方法。

final 方法

禁止派生类修改该方法!

final和private

Private方法已经隐含有final的意思,因为外部是不能访问private的,也就不存在覆写它。

final类

出于类的设计考虑,它再也不需要作修改了;或者从安全角度出发,不希望它再派生出子类。
final类的数据可以是final的,也可以不是final的,这由自己决定;对于它的方法,由于final类禁止了继承,覆写方法已经不可能,所以所有的方法都隐含地变成final的了!

TAG: JavaJAVAjava关键字

查看全部1条评论

最新评论

  • 删除 teacodeing (2011-11-18 11:33:34, 评分: 5 )

    5
查看全部1条评论


点击下载系统:http://www.myeducs.cn/chaxun/index.html?go=java关键字 final 修饰符整理&aa=%CB%D1%CB%F7%C2%DB%CE%C4
  • 上一篇资讯: JavaEE创建单例类
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师