day12final关键字

86 阅读2分钟
final关键字: 代表最终的,不可改变,可以修饰的内容:
final修饰的关键的类:  不可以被继承,不能够有子类 但是有父类
final修饰的方法: 不能被子类覆盖重写 
3.变量:   只能赋值一次,不可以进行第二次赋值,变量的值是不可以发生改变的常量
    父类没有final修饰的方法,子类重写后的方法可以添加final关键字 
final修饰变量:   
	1.特点: 只能赋值一次,不可以进行第二次赋值,变量的值是不可以发生改变的     常量
    2.修饰局部变量(方法内部定义的变量):
    	(1)基本类型: 基本类型变量中存储的具体的数字是不可以被改变的
//数组名保存地址值,被final修饰后,地址值不可以被改变
        final int[] arr = new int[]{10,20,30};
        System.out.println(Arrays.toString(arr));

        //arr = new int[]{100,200,300};错
    	(2)引用类型: 存储的对象的地址值,被final修饰后,说明变量存储的对象的地址值是不可以被改变的
                            但是该地址代表的内存空间中的内容是可以改变的

    3.成员变量: 看MyClass03 认为默认值无效,要么显式赋值,要么构造方法中赋值
        (1)定义未赋值:
            所有构造方法中,必须完成对final修饰的变量的赋值
            所有成员方法中,不能修改final修饰的变量的值
//final修饰成员变量
public class Demo03FinalVar2 {
    String name;
    //定义未赋值
    final int num; 
    //空参构造
    public Demo03FinalVar2() {
        num = 10;
        //错误: 第二次赋值
        //num2 = 200;
    } 
}
        (2)定义并赋值:
            所有构造方法/成员方法中,不能修改final修饰的变量的值