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

面向对象高级(3)类中属性赋值与final关键字

面向对象高级(3) 类中属性赋值与final关键字

先后加载顺序总结:

默认初始化赋值、显式赋值/代码块、构造器、属性/方法。

关于显式赋值与代码块的执行先后:

首先,由于static修饰的结构随着类的加载而加载,所以static修饰的结构先于菲static修饰的结构执行。而在静态变量与静态代码块之间的先后则取决于代码的先后。

练习:

public class Exercise1 {
    public static void main(String[] args) {
        //static blocks
        //父静。子静
        Son son = new Son();
        //not static blocks
        //父非静、父构造
        //在创建子类对象之前,需要先初始化父类
        //子菲静、子构造
    }
}
class Father{
    static{
        System.out.println("1)父类的静态代码块");
    }
    {
        System.out.println("2)父类的非静态代码块");
    }
    Father(){
        System.out.println("3)父类的无参构造");
    }
}
class Son extends Father{
    static{
        System.out.println("4)子类的静态代码块");
    }
    {
        System.out.println("5)子类的非静态代码块");
    }
    Son(){
        System.out.println("6)子类的无参构造");
    }
}

final关键字

1、final关键字的作用

表示这个类不能被继承、表示此方法不能被重写、表示此变量不能被改变。

如果某个成员变量用final修饰后,没有set方法,则该成员变量必须初始化。可以显式赋值、或在初始化块赋值、实例变量还可以在构造器中赋值。

当用final修饰成员变量的时候,可以将此变量看作常量,变量名均大写。

常见简例:

final int MONEY = 0;

因为此时MONEY为常量,return MONEY的值时不能写作MONEY++;

但是可以写作return MONEY+1;

public class Final {
        public static void main(String[] args) {
            Other o = new Other();//创建实例对象
            new Final().addOne(o);//创建匿名对象...
            System.out.println(o.i);
        }
        public void addOne(final Other o) {
            // o = new Other();
            o.i++;
        }//o为常量,直接调用方法addOne
    }
    class Other {
        public int i;

}


http://www.kler.cn/a/407829.html

相关文章:

  • 【SKFramework框架】一、框架介绍
  • 排序算法(选择排序、直接插入排序、冒泡排序、二路归并排序)(C语言版)
  • 神经网络中常用的激活函数(公式 + 函数图像)
  • VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源
  • C0030.Clion中运行提示Process finished with exit code -1073741515 (0xC0000135)解决办法
  • docker搭建私有的仓库
  • 【2024 Optimal Control 16-745】Ubuntu22.04 安装Julia
  • Java基于SpringBoot+Vue实现酒店客房管理系统(含源码+数据库)
  • 中序表达式转后序表达式
  • 网络安全设备
  • 采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element
  • Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
  • 分布式 Data Warebase - 构筑 AI 时代数据基石
  • go-zero(八) 中间件的使用
  • 【人工智能】深入理解 Keras:从0开始完整教程!掌握深度学习的核心技术
  • 数据结构 (4)线性表的顺序存储
  • EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!
  • 手写一个深拷贝工具
  • 【Java知识】Java进阶-web应用热部署
  • 部署端侧大模型
  • 设计模式学习[9]---模板方法模式
  • 深度学习:GPT-1的MindSpore实践
  • git如何将当前的修改提交到其它分支
  • 性能测试调优之线程池的性能优化
  • Spark SQL操作
  • 文件分片上传