面向对象16:代码块、final关键字
代码块(或初始化块)
- 代码块的作用:用来初始化类、对象(从这个角度看,把它叫作初始化块)
- 代码块如果有修饰的话,只能使用static
- 分类:静态代码块 vs 非静态代码块
静态代码块
static {}
- 内部可以有输出语句
- 随着类的加载而执行,且只会执行一次
- 作用:初始化类的信息(比如静态属性)
- 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行。
- 静态代码块的执行要优先于非静态代码块的执行
- 静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构
非静态代码块
{}
- 内部可以有输出语句
- 随着对象的创建而执行
- 每创建一个对象,就执行一次非静态代码块
- 作用:可以在创建对象时,对对象的属性等进行初始化
- 如果一个类中定义了多个代码块,则按照声明的先后顺序执行
- 非静态代码块内部可以调用静态属性、静态方法,或非静态属性、非静态方法。
对属性可以赋值的位置:
- 默认初始化
- 显式初始化
- 构造器中初始化
- 有了对象后,可用“对象.属性”、“对象.方法”的方式进行赋值
- 在代码块中赋值
执行先后顺序:1-2/5-3-4(2或5只看谁先声明,但一般没人把代码块声明在前面)
final关键字
1.final可以用来修饰的结构:类、方法、变量
2.final用来修饰一个类:此类不能被其他类所继承(即此类不能有子类了)。比如:String类、System类、StringBuffer类
3.final用来修饰方法:表明此方法不可以被重写。比如:Object类中的getclass();
4.final用来修饰变量:此时的“变量”就称为是一个常量
- final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化
- final修饰局部变量:尤其是使用final来修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值后,就只能在方法体内使用此形参,但不能进行重新赋值。
static final用来修饰属性:全局常量
注意:当我们把对象形参设成final时,对象里的属性可以变。
public void addOne(final other o){o.i++;
}
以上代码是合法的。
面向对象16:代码块、final关键字相关推荐
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- Java基础-day08-static·static静态代码块·final 关键字·多态·汽车设计综合案例·异常
day09 1.static 是java中的一个关键字 用于修饰成员(成员变量和成员) 1.static是一个关键字 2.static可以修饰成员变量和方法,被修饰的资源就是静态资源 3.静态资源优先 ...
- [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中 方法外 调 ...
- 面向对象编程(十二)——final关键字
阅读目录 final关键字 final修饰变量 final修饰方法 final修饰类 Final && Static 总结 final关键字 Java关键字final有"这是 ...
- Java面向对象(18)--final关键字使用
在Java中声明类.变量和方法时,可使用关键字final来修饰,表示"最终的". final标记的类不能被继承,提高安全性,提高程序的可读性 如:String类.System类.S ...
- Java面向对象(四)final关键字
一.final修饰变量 final修饰变量之后变量的直接值不能更改 ---- 常量. final定义的常量在对象创建完成之前允许改变一次值. java中 所说的常量往往是指静态常量 --- 只存储一份 ...
- static关键字与代码块
文章目录 static关键字与代码块 一.static关键字 1.静态属性 2.静态方法 二.代码块 1.普通代码块 2.构造代码块 3.静态代码块 static关键字与代码块 一.static关键字 ...
- synchronized锁机制 之 代码块锁
synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间.这种情况下可以尝试使用 ...
- 编程开发之--java多线程学习总结(2)同步代码块
1.第一种解决办法:同步代码块,关键字synchronized package com.lfy.ThreadsSynchronize;/*** 1.使用同步代码块* 语法:synchronized ( ...
- 在方法参数上使用final关键字
经过一些自己的混淆,最终博客方法的具体含义(最终声明的方法参数)将对此博客条目进行澄清. 至少可以将方法参数上的final关键字视为Java编译器的指示符,表明该参数不能重新分配给另一个引用. Jav ...
最新文章
- ORB_SLAM2代码阅读(4)——LoopClosing线程
- 第三代主流测序数据组装软件
- 在Ruby中获取system()调用的输出
- 【django轻量级框架】使用支付宝支付接口(沙箱)
- linux服务器数据转发,Linux云服务器如何使用iptables做流量转发?
- mysql怎么引用别的文件_用source语句引用mysql文件的细节注意
- rust(20)-字符
- 腾讯在线教育小程序开发实践之路
- [jQuery] 针对jQuery的优化方法有哪些?
- 部署windows服务
- php修改隐藏域非法提交,PHP get、post变量放在表单隐藏域示例
- 使用keepalived搭建mysql主从备份、切换
- 如何降低软件项目的风险 -- 包括客户的风险,软件提供商的风险
- MPEG4Extractor分析
- OA系统新流程创建与管理办法
- Excel宏的基本逻辑语句
- JS数据结构与算法-队列结构
- Element ui 表单验证触发方式:trigger的两种选项
- k8s-重启kubelet服务异常 kubelet.service: main process exited, code=exited, status=1/FAILURE
- 工作五年的我,为什么要转行学网络安全技术呢