• Java-final


    【1】修饰变量;

    1. 1.public class Test {
    2. 2. //这是一个main方法,是程序的入口:
    3. 3. public static void main(String[] args) {
    4. 4. //1种情况:
    5. 5. //final修饰一个变量,变量的值不可以改变,这个变量也变成了一个字符常量,约定俗称的规定:名字大写
    6. 6. final int A = 10;//final修饰基本数据类型
    7. 7. //A = 20; 报错:不可以修改值
    8. 8. //2种情况:
    9. 9. final Dog d = new Dog();//final修饰引用数据类型,那么地址值就不可以改变
    10. 10. //d = new Dog(); -->地址值不可以更改
    11. 11. //d对象的属性依然可以改变:
    12. 12. d.age = 10;
    13. 13. d.weight = 13.7;
    14. 14.
    15. 15. //3种情况:
    16. 16. final Dog d2 = new Dog();
    17. 17. a(d2);
    18. 18. //4种情况:
    19. 19. b(d2);
    20. 20.
    21. 21. }
    22. 22. public static void a(Dog d){
    23. 23. d = new Dog();
    24. 24. }
    25. 25. public static void b(final Dog d){//d被final修饰 ,指向不可以改变
    26. 26. //d = new Dog();
    27. 27. }
    28. 28.}

    【2】修饰方法;

    final修饰方法,那么这个方法不可以被该类的子类重写:

    【3】修饰类; 

    final修饰类,代表没有子类,该类不可以被继承:

    一旦一个类被final修饰,那么里面的方法也没有必要用final修饰了(final可以省略不写)

    【4】案例:JDK提供的Math类:看源码发现:

    (1)使用Math类的时候无需导包,直接使用即可:

    (2)Math类没有子类,不能被其他类继承了

    (3)里面的属性全部被final修饰,方法也是被final修饰的,只是省略不写了

    原因:子类没有必要进行重写。

    (4)外界不可以创建对象:

    Math m = new Math();

    (5)发现Math类中的所有的属性,方法都被static修饰

    那么不用创建对象去调用,只能通过类名.属性名  类名.方法名 去调用

  • 相关阅读:
    PaddleDetection训练目标检测模型
    docker容器管理-实操命令
    【Linux】线程池
    数据结构-作业6
    R语言的DICE模型实践技术
    给el-form-item,添加key的场景
    Redis - 对象结构
    如何使用Jenkins持续集成构建接口自动化测试--配置邮件通知
    #AcWing 35.反转链表
    前端js获取key值方法
  • 原文地址:https://blog.csdn.net/weixin_45503872/article/details/134516413