【Java基础】——之Final

来源:互联网 发布:淘宝海景房是什么意思 编辑:程序博客网 时间:2024/06/10 11:18

我们都知道final这个关键字代表“不可修改”的意思,但是不同的“不能修改”有不同的含义。

final必须显示指定初始值,否则其值就为null。其赋值的过程都是放在静态初始化块内完成的(注意:他的优先级高于成员变量在构造函数中赋值)。

1.final的变量:

通常final成员变量表明这个变量只能被赋值一次,而不是说他是静态常量。

比如说:

final int i = 1;     此时i不可再改变

再比如:

final int i;    此时可以对i进行赋值,但是不可进行二次赋值

i = 1; //right

i = 2;//wrong

以上是常数的变量,下面我们看看对象变量,有的人认为给对象加了final之后代表该对象不可改变,我们来看代码:

final TestFinal tf = new TestFinal();tf.setS(77);System.out.println(tf.getS());tf.setS(33);System.out.println(tf.getS());
对tf对象加了final关键字之后,tf中的s值可以随意变化,以上输出结果为:77、33

那有的人就会理解为final对对象变量是没有意义的?这就不对了,对象变量加了final标签之后表示其引用的指向不可改变,即其不能再指向其他对象,但是该对象的成员内容是可以改变的。

tf.setS(55);//right

tf = new ThesFinal();//wrong

final数组同对象变量,即不可指向其他数组,但是数组内容可修改。

2.final的方法:

子类在继承父类的时候,父类中的final方法是不能被覆盖的。

另外,由于private的方法在子类中是不可见的,也就是说,即使子类中可以重新定义这个方法,两个类之间的这个方法也毫无关系,不构成覆盖;子类不可能覆盖父类的private方法,父类的private方法不可能在子类中出现新版本,因此private的方法就是final的。


3.final的类:

final的类是不能被继承的,这样的类主要起安全的作用。final类中的所有方法都是final的。


原创粉丝点击