【零基础学Java】—final关键字与四种用法(二十九)

一、final关键字

final关键字代表最终、不可改变的

常见的四种用法:

  • 可以用来修饰一个类
  • 可以用来修饰一个方法
  • 可以用来修饰一个局部变量
  • 可以用来修饰一个成员变量

(一)、final关键字用来修饰一个类

格式:public  final class 类名称 {// …………}

含义:当前这个类不能有任何的子类

注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子)

/*
注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子)*/
public final class DemoFinal /*extends  Object*/{public void method(){System.out.println("方法执行");}}
//不能使用一个final类来作为父类
public class MySon /*extends DemoFinal*/{}

(二)、final关键字可以用来修饰一个方法

  • 当final关键字用来修饰一个方法的时候,这个方法就是最终的方法 也就是不能被覆盖和重写
格式:
修饰符 final 返回值类型 方法名称(参数列表){方法体;
}

注意:对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾

(三)、final还可以用来修饰局部变量

  • final还可以用来修饰局部变量,那么这个变量就不能进行更改,一次赋值,终生不变
  • 对于基本类型来说 不可变是说的变量当中的数据不可变
  • 对于引用类型来说,不可变说的是变量当中的地址值不可改变
public class demo02 {public static void main(String[] args) {int num1=10;System.out.println(num1);//10num1=20;System.out.println(num1);//20//一次赋值,终生不变final int num2=100;System.out.println(num2);//100// num2=100;错误写法//正确写法 只要保证有唯一一次赋值即可final  int num3;num3=30;System.out.println(num3);//30//对于基本类型来说 不可变是说的变量当中的数据不可变//对于引用类型来说,不可变说的是变量当中的地址值不可改变Student stu1=new Student("张三");System.out.println(stu1);System.out.println(stu1.getName());//张三stu1=new Student("李四");//李四System.out.println(stu1);System.out.println(stu1.getName());final   Student stu2=new Student("王五");//错误写法啊,final的引用类型变量 其中的地址不可改变//stu2=new Student("王嘉尔");System.out.println(stu2.getName());stu2.setName("王嘉尔");System.out.println(stu2.getName());}
}

(四)、final关键字可以用来修饰一个成员变量

  • 对于成员变量来说,如果使用final关键字,那么这个变量也照样是不可变的
  • 对于成员变量具有默认值,所以使用了final之后必须手动赋值,不会再给默认值了
  • 对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值(二者选择其一)
  • 必须保证类当中的所有的重载的构造方法都会对final的成员变量进行赋值

【零基础学Java】—final关键字与四种用法(二十九)相关推荐

  1. 【零基础学Java】—笔记本USB接口案例(二十八)

    [零基础学Java]-笔记本USB接口案例(二十八) 一.笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体什么是USB ...

  2. 零基础 学 python开发 (Genius套餐A) 二十九

    夜光序言: 恋人分手之际,还能把话说得平和得体的,肯定是已然变心的那一个. 正文: 5.3 对象初始化    5.3.1 目标 面向对象的程序设计中在对象实例化时往往要对实例做一些初始化工作,例如设置 ...

  3. 【零基础学Java】—多线程(四十九)

    [零基础学Java]-多线程(四十九) 一.并发与并行 并发:指两个或多个事件在同一时间段内发生 并行:指两个或多个事件在同一时刻发生(同时发生) 二.进程和线程

  4. 【零基础学Java】—自定义异常(四十八)

    [零基础学Java]-自定义异常(四十八) 自定义异常类:java提供的异常类,不够我们使用,需要自己定义一个异常类 格式: public class XXXException extends Exc ...

  5. 【零基础学Java】—字符串的概述和特点(十五)

    [零基础学Java]-字符串的概述和特点(十五) 一.字符串的特点 java.lang.String类代表字符串 API当中说:Java程序中的所有字符串字面值(如:"abc")都 ...

  6. 零基础 学 python开发 (Genius套餐A) 二十六

    夜光序言: 能够让人从癫狂中沉静,从暴戾中平和的力量,就是所谓的爱情吧~~ 正文: 4.7 实践项目:我的英文字典    4.7.1 项目目标 实现一个简单的英语字典查询与管理程序.一个英文单词包含单 ...

  7. 【零基础学Java】—对象的向上和向下转型(二十七)

    [零基础学Java]-对象的向上转型(二十七) 对象的向上转型,其实就是多态的写法 格式:父类名称 对象名=new 子类名称(): 含义:右侧创建一个子类对象,把它当做父类来看待使用 注意事项:向上转 ...

  8. 【零基础学Java】—throw关键字(四十六)

    [零基础学Java]-throw关键字(四十六) 一.throw关键字 public class demo {public static void main(String[] args) {//创建i ...

  9. 【零基础学Java】—static关键字概述(十六)

    [零基础学Java]-static关键字概述(十六) 一.static关键字 二.static关键字修饰成员变量 /*** @author :CaiCai* @date : 2022/4/8 11:1 ...

最新文章

  1. 开启文件高级共享功能
  2. 中科微研携手-农业大健康·李喜贵:从玉农业谋定功能性农业
  3. #中delay函数_ECBM系列教程3:闪烁灯——delay函数的用法。
  4. python多元回归预测例子_Python机器学习,多元线性回归分析问题
  5. 从零写一个编译器(六):语法分析之表驱动语法分析
  6. 一起谈.NET技术,C#序列化与反序列化(Serializable and Deserialize)
  7. [Azure] Notification Hubs注册模式
  8. excel分两个独立窗口_Excel2010 多个独立窗口,解决单窗口无法显示多个文件的问题...
  9. leetcode434. 字符串中的单词数
  10. [转载] python中的for循环对象和循环退出
  11. Android APP开发需求文档范本
  12. java 反射 泛型 构造函数_Java复习——反射和泛型的复习
  13. matlab2014的m文件画波形,matlab绘制波形图
  14. java定义一个周长类三角形_point类 三点的三角形的周长、面积 编程求解矩形和圆面积 java 三角形的定义...
  15. Labview 2020 中文版安装教程
  16. android手机不能发短信,小米4手机收短信正常但无法发送短信怎么办?
  17. UML 2.0修成正果
  18. 不知道多张照片拼图哪个好?这个我一直不舍得删!
  19. 浮选泡沫让人很迷迷茫但矿物浮选消泡剂反而轻松解决解决泡沫
  20. tvoc气体传感器哪家做的比较好

热门文章

  1. 使用git上传项目到github
  2. 通过规模化Scrum创造最新技术的打印机
  3. PHP ceil()函数
  4. Windows系统下SSH客户端连接阿里云Linux服务器
  5. 设计模式 之 《工厂方法模式》
  6. Android 基本控件使用
  7. 在职工象棋赛上弃子拿下一盘
  8. Fedora 11 Beta 跳票了
  9. 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(五)
  10. 基于角色(Role-Based)的表单验证