final关键字用法

final在Java中用于修饰类、方法和变量,创建不可变的常量和防止继承。final类不能被继承,final方法不能被重写。final修饰基本类型变量后,其值不可更改;修饰引用类型变量时,对象内容可变但引用不可变,不能重新赋值。
摘要由CSDN通过智能技术生成

1.概述:在java中,final关键字可以用来修饰类,方法和变量,final为最终的意思,通常通过final关键字修饰的变量就变成了常量。

2.final修饰类

使用final关键字修饰类,则该类不能被继承,称为最终类。(即该类不能有任何的子类)

//父类被final关键字修饰
public final class Person {

}

//子类想继承父类Person,编译不通过,报错
class Student  extends Person{
	
}

报错信息: Student类不能成为被final关键字修饰Person类的子类

当你不希望一个类被继承的时候,就可以使用final修饰这个类,这样,该类就不能被任何一个类继承。

3.final修饰方法

 final修饰类时,表明类不能被继承,修饰方法时,说明该方法为最终方法,即不能被子类重写。

public class Person {
	
    //未被final关键字修饰的方法,在子类中可以正常被重写
	public void shout() {
		System.out.println("Person----大喊");
	}
	
    //被final关键字修饰的方法,子类中不能被重写
	public final void run() {
		System.out.println("Person------跑");
	}
}


class Student  extends Person{
    
    //正常重写父类中未被final关键字修饰的方法
	@Override
	public void shout() {
		System.out.println("Student-------大喊");
	}
	
    //重写父类中被final关键字修饰的方法,编译不通过,报错
	@Override
	public void run() {
		System.out.println("Studnet-------跑");
	}
}

报错信息:不能重写父类中的final方法

 

4.final修饰成员变量

final修饰基本数据类型变量,该变量必须初始化,且初始化后不能修改值。

	public static void main(String[] args) {
		final int a=10;
        //变量a重新赋值时,编译不通过
		a=100;
	}

报错信息: 变量a不能重新赋值

 final修饰引用数据类型变量,值可以被修改,但不能重新分配内存空间。

public static void main(String[] args) {
		final int[] arr= {1,2,3};
		for(int i=0,len=arr.length;i<len;i++) {
            
            //修改数组元素中的值
			arr[i]=arr[i]*100;
		}
		
        //重新分配内存空间,编译不通过
		arr=new int[] {10,20,30};
	}

 运行结果:

 从运行结果中可以看出,被final修饰的引用类型数据变量,值可以被正常修改,但当重新分配内存空间时,编译不通过,报错信息与上面修改基本数据类型值的时候一致。

5.总结

1.final修饰类时,该类为最终类,不能被继承
2.final修饰方法时,该方法为最终方法,不能被子类重写

3.final修饰变量时,分为两种情况:

        修饰基本数据类型时,变量就会变为常量,值不能被修改

        修饰引用数据类型时,元素的值可以修改,但不能给变量重新分配内存空间

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值