final关键字

final关键字final 关键字 一 final 关键字的概述 学习了继承后 我们知道 子类可以在父类的基础上改写父类内容 比如 方法重写 那么我们能不能随意的继承 API 中提供的类 改写其内容呢 显然这是不合适的 为了避免这种随意的改写的情况 java 提供了 final 关键字 用于修改不可改变 内容 final 不可改变 可以修饰类 方法和变量 二 fianl 关键字的用法

大家好,我是讯享网,很高兴认识大家。

final关键字

一、final关键字的概述

​ 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写.那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的.为了避免这种随意的改写的情况,java提供了final关键字,用于修改不可改变内容.

  • final :不可改变.可以修饰类,方法和变量.
二、fianl关键字的用法
2.1fianl用于修饰类

格式如下:

final class 类名 { 
    } 

讯享网
注意事项 :被final修饰的类是不能被继承的,但内容可以修改.
2.2fianl用于修饰成员方法

格式如下:

讯享网权限修饰符 final 返回值类型 方法名 (参数列表) { 
    } 
注意事项 :被final修饰的方法不能被重写,重写时就会编译报错.
2.3fianl用于修饰局部变量
  1. 局部变量——基本类型

    基本类型的局部变量,被final修饰后,只能赋值一次,不能更改.代码如下:

    public class FinalDemo1 { 
          public static void main(String[] args) { 
          // 声明变量,使用final修饰 final int a; // 第一次赋值  a = 10; // 第二次赋值 a = 20; // 报错,不可重新赋值 // 声明变量,直接赋值,使用final修饰 final int b = 10; // 第二次赋值 b = 20; // 报错,不可重新赋值 } } 
    1. 局部变量——应用类型


      讯享网

      引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能在更改.但不影响内部的成员变量值的修改,代码如下:

      讯享网public class FinalDemo2 { 
              public static void main(String[] args) { 
              // 创建 User 对象 final User u = new User(); // 创建 另一个 User对象 u = new User(); // 报错,指向了新的对象,地址值改变。 // 调用setName方法 u.setName("张三"); // 可以修改 } } 
2.4fianl用于修饰成员变量

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

  • 显示初始化:
    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修饰的常量名称,一般都有书写规范,所有字母都大写.
    final: 概述:关键字,用于修饰不可改变内容 使用:final关键字可以修饰类,方法,变量 final关键字修饰类:final修饰的类是不能被继承的 格式: public final class 类名{ 
          } final关键字修饰方法:final修饰的方法是不能被重写的 格式: 权限修饰符 final 返回值类型 方法名(参数列表){ 
          } final关键字修饰变量:final修饰的变量,只能赋值一次,不能重复赋值 格式: final 数据类型 变量名 =; 推荐 final 数据类型 变量名; 变量名 =; =========================================================== // final关键字修饰局部变量: 基本数据类型,引用数据类型 // final关键字修饰局部变量: 基本数据类型 final int NUM = 10; // num = 20; 错误的,因为num被final修饰,变成了常量,常量只能赋值一次 System.out.println(NUM);// 10 final int NUM2; NUM2 = 100; // num2 = 1000; 错误的,因为num2被final修饰,变成了常量,常量只能赋值一次 System.out.println(NUM2);//100 =========================================================== // final关键字修饰局部变量: 引用数据类型 final Animal anl = new Animal(); anl.name = "jack"; System.out.println(anl.name);// jack // anl = new Animal();错误的,因为anl被final修饰,变成了常量,常量只能赋值一次 anl.name = "rose"; System.out.println(anl.name);// rose // final关键字修饰成员变量:只能赋值一次 final int AGE = 18;// 直接赋值 final int WEIGHT; String name; // 通过构造方式赋值: 一定要保证所有构造方法都可以给该常量赋值 public Dog(){ 
          this.WEIGHT = 30; } public Dog(String name){ 
          this.WEIGHT = 30; this.name = name; } 
小讯
上一篇 2025-04-04 20:33
下一篇 2025-02-25 16:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/50108.html