Final关键字

Final关键字

1.定义:

1.访问修饰符+final+数据类型+变量名=初始值
2.访问修饰符+final+返回值类型+方法名(形参)
3.final+class+类名

2.作用:

1.final 修饰成员属性或局部变量,则其变为常量,其值只读
2.final 修饰成员方法,该方法不能被子类进行重写,但仍会被继承
3.final 修饰类,该类不允许其他类进行继承,但仍可以实例化对象
4.final 配合static 使用不会导致类信息的加载

3.细节:

1.final修饰的变量为常量,其名称全部大写,且单词间用_间隔
2.final修饰的变量必须进行初始化:
		1.普通变量:
				1.在定义是初始化
				2.在普通代码块中初始化
				3.在构造器中初始化
		2.静态变量:
				1.在定义是初始化
				2.在静态代码块中初始化
3.static 和 final 搭配使用,不会导致类信息加载(重点!!!)
4.final可以修饰形参,因为函数调用时参数必须给值

static 和 final 配合使用不会导致类信息加载

public class FinalUse {
    public static void main(String[] args) {
        System.out.println(Temp01.test);
    }
}
class  Temp01{
    public static  String test="静态成员属性";
    static {
        System.out.println("类信息被加载!!!");
    }
}
//执行结果:
//类信息被加载!!!
//静态成员属性
public class FinalUse {
    public static void main(String[] args) {
        System.out.println(Temp01.test);
    }
}
class  Temp01{
    public static final String test="静态成员属性";
    static {
        System.out.println("类信息被加载!!!");
    }
}
//执行结果:
//静态成员属性

final修饰常量

public class FinalUse02 {
    public static void main(String[] args) {
        Temp02 temp02 = new Temp02(300);
//        temp02.CONST_VAR01=400;
//        Cannot assign a value to final variable 'CONST_VAR01'
//        不允许被赋值,为只读
    }
}
final class Temp02{
    public  final int CONST_VAR01=100;
    public  final int CONST_VAR02;
    public  final int CONST_VAR03;
    //静态成员常量
    public static final int CONST_STA01=10; //定义时赋值
    public static final int CONST_STA02;
    static{
        CONST_STA02=20;
        //在静态代码块中赋值
    }
    
    {
        //在代码块中对常量进行初始化
        CONST_VAR02=200;
    }
    
    public Temp02(int test){
        CONST_VAR03=test;
        //在构造器中进行初始化
    }
}

final修饰方法及类

public class FinalUse02 {
    public static void main(String[] args) {
        Temp03 temp03 = new Temp03();
        temp03.speak();
        //方法不能被重写但仍会有继承关系
    }
}
//class Temp03 extends Temp02{
//    Cannot inherit from final 'review07.Temp02'
//    final修饰的类不允许被继承
//}
class Temp03{
    public final void speak(){
        System.out.println("speak hellow!!!");
    }
}
class Temp04 extends  Temp03{
//    public void speak(){ }
//    speak()' cannot override 'speak()' in 'review07.Temp03'; overridden method is final
    //final 修饰的方法子类不能进行重写,但仍任会被继承
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值