final关键字可以使用在类、方法和变量上
代码块一般用来初始化类、对象


一、final关键字

适用范围:类、方法和变量

    1. 意义:表示此类不可以再被其他类所继承
    2. 用处:表示此类功能已经足够完善,不需要再额外添加新的方法
  1. 方法
    1. 意义:该方法不可以再在子类中进行重写
    2. 用处:表示此方法不希望被重写
  2. 变量
    1. 意义 :表示变量的值不可以再发生修改
    2. 适用赋值的位置:
      1. 显示初始化:声明变量的时候就直接进行赋值
      2. 适用代码块进行赋值
      3. 构造器

        二、代码块

        形式:适用一对花括号包裹起来
        作用:用来初始化类、对象。是一种新的初始化的方法
        分类:非静态代码块和静态代码块
        非静态代码块和静态代码块的区别:

        静态代码块

        1. 作用:对静态属性初始化赋值
        2. 随着类的加载而执行,并且只执行一次
        3. 只能调用类中的静态结构
        4. 如果定义了多个,就按照定义的顺序执行

        非静态代码块

        1. 随着对象的创建而执行
        2. 每创建一个对象,就会重新执行一次非静态代码块
        3. 作用:在创建对象的时候,对对象的非静态属性进行初始化
        4. 可以调用静态结构和非静态结构
        5. 如果定义了多个,就按照定义的顺序执行

        属性赋值的先后顺序

        1. 默认初始化
        2. 显式初始化 / 代码块初始化
        3. 构造器初始化
        4. 通过 对象.属性 或者 对象.方法 的方式进行赋值
  1. package test7;
  2. /**
  3. * Created By Intellij IDEA
  4. *
  5. * @author Xinrui Yu
  6. * @date 2021/12/20 16:40 星期一
  7. */
  8. public class Application {
  9. public static void main(String[] args) {
  10. System.out.println(Fish.getSum());
  11. Fish fish = new Fish();
  12. System.out.println(Fish.getSum());
  13. }
  14. }
  15. class Fish{
  16. private String name;
  17. public static int sum;
  18. static{
  19. System.out.println("静态代码块的调用");
  20. sum = 10;
  21. }
  22. {
  23. System.out.println("非静态代码块的调用");
  24. name = "金鱼";
  25. sum = 11;
  26. }
  27. public String getName() {
  28. return name;
  29. }
  30. public void setName(String name) {
  31. this.name = name;
  32. }
  33. public static int getSum() {
  34. return sum;
  35. }
  36. public static void setSum(int sum) {
  37. Fish.sum = sum;
  38. }
  39. }

image.png