Java final关键字

1.修饰类

fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)

格式:

final class 类名 {
}

代码示例:

public final class MyClass extends Object{
    public void method() {
        System.out.println("方法执行!");
    }
}
public class MySubClass  extends MyClass{
}

报错:该类不能被继承
在这里插入图片描述

2.修饰方法

final修饰方法:这个方法就是最终方法,也就是不能被覆盖重写。

格式:

修饰符 final 返回值类型 方法名(参数列表){
	//方法体
}

重写被 final 修饰的方法,编译时就会报错

在这里插入图片描述

在这里插入图片描述

注意事项:对于类、方法来说,abstract关键字(要覆盖重写)和final关键字(不能被覆盖重写)不能同时使用,因为矛盾。

abstract和final报错:
在这里插入图片描述

3.修饰变量

final修饰变量:表明该变量是一个常量,不能再次赋值

1. 局部变量——基本类型

final 修饰指的是基本类型的数据值不能发生改变
在这里插入图片描述
在这里插入图片描述
思考,以下两种写法,为何写法1报错!写法2可通过编译?
写法1:

 final int c = 0;
        for (int i = 0; i < 10; i++) {
            c = i;
            System.out.println(c);

在这里插入图片描述
写法2:

public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            final int c = i;
            System.out.println(c);
        }
    }

在这里插入图片描述
根据 final 的定义,写法1报错!写法2,可通过编译,因为每次循环,都是一次新的变量c。

2. 局部变量——引用类型

final 修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的。
在这里插入图片描述
在这里插入图片描述

3. 成员变量

成员变量涉及到初始化的问题,初始化方式有两种,只能二选一:

显示初始化;

public class User {
	final String USERNAME = "张三";
	private int age;
}

构造方法初始化。

public class User {
	final String USERNAME ;
	private int age;
	public User(String username, int age) {
		this.USERNAME = username;
		this.age = age;
	}
}

被final修饰的常量名称,一般都有书写规范,所有字母都大写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值