final:
一.基 本 介 绍
Fina101.java
final 中 文 意 思 : 最 后 的 , 最 终 的 。
final 可 以 修 饰 类 、 属 性 、 方 法 和 局 部 变 量 ,
在 某 些 情 况 下 , 程 序 员 可 能 有 以 下 需 求 , 就 会 使 用 到 final:
1 ) 当 不 希 望 类 被 继 承 时 , 可 以 用 final修 饰
错误示例:
public class Final {
public static void main(String[] args) {
}
}
final class a{
}
class b extends a{
}
2 ) 当 不 希 望 父 类 的 某 个 方 法 被 子 类 覆 盖 / 重 写 时, 可 以 用 final
修 饰 。
错误示例:
public class Final {
public static void main(String[] args) {
}
}
class a{
public final void hi(){}
}
class b extends a{
@Override
public void hi(){
}
}
3 ) 当 不 希 望 类 的 的 某 个 属 性 的 值 被 修 改 , 可 以 用 final修 饰.
错误示例:
public class Final {
public static void main(String[] args) {
a num=new a();
num.x=0.09;
}
}
class a{
public final double x=0.08;
}
4 ) 当 不 希 望 某 个 局 部 变 量 被 修 改 , 可 以 使 用 final修 饰(局部常量)
错误示例:
public class Final {
public static void main(String[] args) {
}
}
//class a{
//public final void hi(){}
// }
class a{
public void hi(){
final double X=0.08;
X=0.09;
}
}
二.注意事项:
1 ) final修 饰 的 属 性 又 叫 常 量 , 一 般 用 XX_ XX _XX 来 命 名 。
示例:final double X_A=0.08;
2 ) final修 饰 的 属 性 在 定 义 时,必 须 赋 初 值 ,并且 以 后 不 能 再修改 ,赋值可 以 在 如 下 位 置 之 一 (选 择 一 个 位 置 初 值 即 可 )
① 定 义 时 :
② 在 构 造 器 中
③ 在 代 码 块 中
3 ) 如 果 final修 饰 的 属 性 是 静 态 的 , 则 初 始 化 的 位 置 只 能 是 ①定 义 时 ② 在 静 态 代 码 块, 不 能 在 构 造 器 中赋值 。
错误示例:
4 ) final类 不 能 继 承 , 但 是 可 以 实 例 化 对 象 。
5 ) 如 果 类 不 是 finl 类 , 但 是 含 有 final方 法 , 则 该 方 法 虽 然 不 能 重 写 , 但 是 可 以 被 继 承 。
6) 一般来说,如果一个类也就是final类了,就没必要再将方法修饰final方法。
7)final不能修饰构造方法
8) final和static往往搭配使用,效率更高,底层编译器做了优化处理。
有final所以静态代码块未被执行
9)包装类(Integer ,Double ,Float,Boole等等)都是final,String也是final类。