java中final关键字的使用
在java 中final关键字可以用来修饰类、变量和方法,表示“最终、最后”的意思。
一、final类与final方法
- 当一个类声明为final后就表示该类是不允许被继承的,否则在编译的时候就会发生错误。所以但我们设计一个类是功能完备或者通用的,并且希望该类是不能够被其他类继承就可以使用final来修饰。
public final class A{ //代码内容省略 }其中public与final的位置是允许交换的,但必须要在clss之前。
如果一个方法被声明为final就表示该方法是不允许被重写的,否则也会报编译时错误。有些时候我们想要我们设计的类能够被继承,但是有一些方法又不想被重写,就可以在这些方法之前使用final类修饰。<pre name="code" class="java">public class B{ public final void test1(){ //方法代码省略 } public String test2(){ //方法代码省略 } }
二、final常量
final关键字还可以用来修饰变量,可以是成员变量也可以是局部变量。被final所修饰的变量就会变为常量----只能被赋值一次,可以在声明的时候同时进行赋值,也可声明后单独赋值。
对final修饰的成员变量进行赋值有两种情况。
1.对于声明为final的实例变量必须要么在声明的同时进行赋值,要么在每一个构造器中进行显示的赋值,而且这两种方法不能同时使用,否则就会报错。
2.对于声明为final的staitc变量(也称为类变量)必须要么在声明的同时进行赋值,要么在static初始化块(又称为静态初始化块)中进行显示的赋值,并且这两种方法也不能同时使用的,否则也会报错。
要注意的一点是:对与引用类型的变量如果声明为final,只能表示该变量被赋值后,它只能引用同一个对象,但是对象的内容可以改变。
<span style="color:#6600cc;">public class Test
{
<span style="white-space:pre"> </span>public static void main(String []args){
final C c1=new C("Jack",20);
c1.show();
c1.setAge(50);
System.out.println("**********");
c1.show();
}
}
class C{
private String name;
private int age;
public C(String name,int age){
this.name=name;
this.age=age;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void show(){
System.out.println("Name:"+name+"\n"+"Age:"+age);
}
}
输出结果
Name:Jack
Age:20
**********
Name:Jack
Age:50
</span>