java关键字之 final

final

在我们实际编程中,出于效率、安全等原因,有时我们想要一个值无法被更改,这时就需要用到final关键字了。final表示“这部分是不允许修改的!”。final可修饰数据、方法和类。

final数据

final修饰的数据在使用时是无法被更改的,也就是我们常说的常量。常量对于程序而言是有很大作用的,它可以减少程序运行的消耗。常量可分为编译期常量和运行期常量。

编译期常量在类加载时便完成了初始化,因此在类加载之后是不能被更改的。编译器常量可以在编译器执行相应的计算的式子,对于编译器常量而言,只能使用基本的数据类型二期而且必须在最初定义时就进行初始化。

运行期常量可以根据对象的不同而表现不同,它既可以是基本的数据类型也可以是引用类型。对于基本数据类型而言,其不可变的是内容,而对于引用数据类型不可变的是其的引用,引用所指向的内容是可变的。

final方法

final修饰的方法是不能被继承和修改的,因此可以利用final关键字来防止子类对于方法的修改。也就是父类的final方法并被子类覆盖,子类不能存在一个与父类一样的方法,举例如下:
 

//父类
public class Test2 {
public final void show()
{
	System.out.println("this is test2");
}

}

//子类
public class Test3 extends Test2 {

    public void show()
    {
    	System.out.println("this is test3");
    }
	public static void main(String[] args) {
     Test3 t=new Test3();
     t.show();    
	}

}

这样子类将报错,删除final关键字则可以正常运行(此时相当于子类重写了父类的方法,将输出“this is test3”)。除此之外,添加了final关键字的方法在调用时将会减少一定的调用的开销。

final类

final修饰类则表明这个类是一个最终类,最终类不允许偶其他类来继承它,而且不允许这个类存在任何变化。final类中的方法是默认final类型的,成员变量可以是final也可以是非final的。

final参数

在实际编程中,我们还可以用final来修饰参数,这样这个参数的值是不可改变的,如果在使用中尝试修改这个值则会报错。

 

总结:

1)final关键字可以修饰类、方法、属性和局部变量。

2)final修饰的属性初始化可以在编译器也可以在运行期,初始化之后不可改变。

3)final修饰的属性如果是基本数据类型,则后续不能改变;如果修饰的是引用类型,则该引用不可更改,但是引用所指向的值可以改变,因为该final只将这个引用设置为常量。

4)final修饰的方法不可被更改,但是如果该方法不是private类型的话,可以被子类所调用。final修饰的类不可被继承。

 

static和final联合使用

1)使用范围为二者的交集:成员变量、方法和类

2)修饰成员变量时一旦复制则不可被更改,可以通过类名直接调用

3)修饰方法时不可被重写,可通过类名直接调用。

4)修饰类时不可被继承。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值