final : 最终
final 的类
1) 不能再被子类继承.
2) 不能被子类修改了!
3) 很少使用final类! 影响"动态代理"实现.
Java API 中的final类: String IntegerDouble Long
Math
class MyString extends String{}//编译错误
final 的方法
1) 不能被子类重写
2) 可以避免在子类中修改这个方法!
3) 很少使用! 影响"动态代理"实现.
fianl 变量 : 只能初始化一次, 不能再修改的变量!
package day04;
/**
* fianl 变量
1) 只能初始化一次, 不能再修改的变量!
*/
public class Demo04 {
public static void main(String[] args) {
final int a;//声明/定义变量
int b;
a = 1;//初始化, 第一次赋值
b= 1;
//a = 8;//编译错误, 赋值
b= 8;
//哪行有编译错误: A.8 B.9 C.10 D.11 E.12 F.13
final int c = 9;//声明同时初始化
test(0,9);
test(9,9);//方法调用
final int[] ary = null;
//ary = new int[5];//编译错误
}
//方法的参数, 在调用方法传递参数时候初始化的!
public static void test(final int a, int b){
//a = 8;//编译错误!
b = 8;
}
}
static final 用来修饰常量
1) 常量一般使用大写字母书写, 多个单词使用_分隔
2) 在广义上, 不严格区分 常量 和 字面量, 都称为常量!
常量 和 字面量
常量: 是固定不变的量的名字: ROWS, COLS
字面量/直接量: 是直接写出的常数: 10, 20
public static final int ROWS = 20;
public static final int COLS = 10;
Java 源文件的结构
package {0,1}
import{0,n}
public class{0,1} 只能有一个公有类
class{0,n} 默认类/同包类, 可见范围: 当前包
文件名必须有公有类类名一致, 如果没有公有类和某个类名一致
一般情况下: 一个文件一个公有类