java中final关键字的作用

💖 简介

java中final关键字应用广泛,使用频繁,我结合C++进行整理,归纳,方便理解和掌握,特记录如下。

如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹

💖 修饰变量

final修饰的变量,成为常量,常量的值不能被修改,只能定义一次。类似于C/C++中的const。

🏆 局部变量

final修饰的局部变量必须声明进行初始化,如果不初始化,虽然声明时不报错,但是使用时就会报错。

final int a;       //只声明,未赋值
System.out.println(a);//报错


final int a=10;   
a=20;      //报错   Cannot assign a value to final variable 'a'

C++中有同样的用法,但是,关键字使用const:

const int len = 10;
len = 20;   //报错   表达式必须是可修改的左值

🏆 成员变量

final 修饰的类中的成员变量,对象创建时必须初始化该成员,即声明的时候初始化或构造函数进行初始化,该类对象被构建以后,这个值不能被修改,即没有setName方法。

public class MyPerson {
    private final int age;

    public MyPerson(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    //该setName方法,会报错
    public void setAge(int age)
    {
        this.age=age;//报错
    }

}

C++中有同样的用法,但是,关键字使用const:

class Person
{
private:
	 const int age;

};

🏆 修饰形参

final修饰形参时,该形参在函数内不能被修改。

public void fun(final int a)
{
     System.out.println(a);   //正确   可以被访问
     a=20;					//错误   不可以被修改
}

C++中有同样的用法,但是,关键字使用const:

void fun(const int a)
{
	a = 10;   //报错
}

💖 修饰方法

该方法不能被重写,类的private方法会被隐式的指定为final方法。

public class MyPerson {
    private final int age;

    public final void printValue()
    {
   		 System.out.println(age);   //正确   可以被访问
    }

}

C++11中也使用final关键字来修饰虚函数,表示该虚函数不能被重写。但是,final关键字放在函数的后面,如下

class MyPerson
{
public:
	virtual void printValue() final;  //正确
    void printKey() final;            //错误,只能修饰虚函数
}

💖 修饰类

该类不能被继承,一般用于将工具类设计成final类。如java中的String类:

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    
}

C++11中也使用final关键字来修饰类,表示该类不能被继承。但是,final关键字放在函数的后面,如下

class Person final
{
}

💖 好处

final关键字可以提升性能。

💖 注意

💚 不能修饰抽象类。因为,抽象类继承才有意义。
💚 不能修饰构造器。因为,构造器不能被继承,也不能被重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值