当前位置: 首页 > news >正文

Final的用法及注意事项

Final 的注意事项

  1. 可用来修饰一个类
  2. 可以用来修饰一个方法
  3. 可以用来修饰一个局部变量
  4. 可以用来修饰一个成员变量
    当修饰一个类的时候
    格式:
// final修饰的类不能作为子类的父类。
public final class Myclass extends object (){
	public void main(){
	System.out.println("这是一个main方法")
}
}

当修饰一个方法的时候,这个方法不能被覆盖重写

package Day8;/*
 *@author wanghongyuan
 *@Create 2020/12/13 19:57
 */

public abstract class Fu {
    public  final  void Mymethod(){
        //方法体
        System.out.println("方法被执行");
    }
    /*fnail 和abstract 不能同时存在,两个自相矛盾
    * 因为fnail是不能被覆盖重写的
    * 而abstract又是一定要被覆盖重写的
    * */
    public abstract /*fnail*/ void methodAbs();
}


当修饰一个局部变量的时候,这个局部变量就不能被修改。局部变量就是在方法体中定义的变量

package Day8;/*
 *@author wanghongyuan
 *@Create 2020/12/13 20:12
 */

public class DemoFinal {
    public static void main(String[] args) {
        int num = 10;
        System.out.println(num);// 这个是10
        num = 20;
        System.out.println(num);// 这个是20
        
        // 如果用fnail修饰这个局部变量的话这个变量不可改变
        final int num2= 22;
     /*   num2 = 223;*/
        //错误写法 报错了,fnail这个修饰了的局部变量不能被修改
// 对于一个基本类型来说,这个不可变说的是变量当中数据不可改变
// 对于一个引用类型来说,这个不可变说的是变量当中的地址值不可改变,内容可以改变
Student stu1 = new Student(name:"赵丽颖");
System.out.println(stu1.getName()); //赵丽颖
stu1 = new Student(name:"赵又廷");
System.out.println(stu1.getName()}; // 赵又廷
stu1.setName("赵丽颖嘤嘤")
}

修饰成员变量时,这个成员变量也是不能改变
1.由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了。
2.对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。
3.必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。

package Day8;/*
 *@author wanghongyuan
 *@Create 2020/12/13 20:30
 */

public class Person {
    // 用final修饰了以后要么直接赋值,要么在构造方法中赋值。
    // 如果在构造方法中赋值了就不用set方法了,给他注释就好了。
    public final String name;

    public Person() {
        name="关晓彤";
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

//    public void setName(String name) {
//        this.name = name;
//    }
}

相关文章:

  • 类的注意事项
  • 超级重要的匿名对象
  • SimpleDateFormat的使用方法及注意事项
  • System中获取当时间,和复制的方法
  • StringBuilder的用法
  • 关于Integer的用法,以Integer为例子,其他八个基本数据类型也可以参照
  • Collection集合学习
  • Iterator迭代器的使用。
  • Java中泛型的概念及使用
  • 常见的数据结构
  • Collection中List的使用及注意事项
  • Collection下的set集合中的hashset方法使用
  • Meterphere安装及使用
  • Collection中set下的Hashset和LinkedHashSet的区别
  • 数据类型中的可变参数理解
  • 78. Subsets
  • create-react-app做的留言板
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js写一个简单的选项卡
  • Koa2 之文件上传下载
  • node 版本过低
  • PHP那些事儿
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 服务器从安装到部署全过程(二)
  • 线上 python http server profile 实践
  • 阿里云ACE认证之理解CDN技术
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)Linux——Linux常用指令
  • (接口封装)
  • (力扣)循环队列的实现与详解(C语言)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)负载均衡,回话保持,cookie
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 使用配置文件
  • .NET 药厂业务系统 CPU爆高分析
  • /etc/sudoers (root权限管理)
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @property python知乎_Python3基础之:property
  • [ SNOI 2013 ] Quare
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [acm算法学习] 后缀数组SA
  • [C进阶] 数据在内存中的存储——浮点型篇
  • [docker]docker网络-直接路由模式
  • [ESP32] 编码旋钮驱动
  • [Git].gitignore失效的原因
  • [RK-Linux] 移植Linux-5.10到RK3399(一)| 搭建系统并让系统跑起来
  • [ThinkPHP]Arr返回1
  • [VS] 诊断工具,检测内存泄漏,进行内存调优
  • [导入]Asp.Net MVC实践 - 自定义ActionResult实现Rss输出 (基于ASP.NET MVC Preview 3)
  • [攻克存储] SRAM地址线的连接