JAVA基础之final
例题show一下
------------------------------------考试分割线------------------------------------------
public class finalOriginalText(){
private final int a;
private String name;
public finalOriginalText(){
a=3;
}
public finalOriginalText(String name){
this.name=name;
}
}
问题1:这个语段可以编译通过吗?她有什么问题?
------------------------------ 考试结束分割线-----------------------------------------
答案当然是不能通过的啦~因为没有初始化变量a啊
final到底还可以用于修饰哪些呢?
final 除了可以修饰刚刚的变量之外,还可以用于修饰类和方法上
修饰方法:
如果final修饰了方法,那么这个方法就不可以被override,就是不能被重写
修饰类:
如果final修饰了类,那么这个类就不可以被继承。
其实你可以这样理解,如果一个东西被final修饰了,那么她就被"终结"了!~
问题二(承接问题一题目)
假设问题一的问题已经解决,我将"public final int a"改为"punlic static final int a"能否编译通过?如果不行,那么请说明她存在的问题。
莫慌莫慌 我们先分析一下这个语句
public 修饰符
static 表示静态变量
final 关键字
int 数据类型
a 类型名称
这个只是比问题一多加了一个static 静态变量标识符,表明a已经是静态变量了,在a还没有实例化的时候,它的值已经有了,所以在声明的时候,我们应该在初始化的时候给她赋值,然后在构造方法中把a=3注释掉就好啦
总结
对于不加static的final修饰语句,我们有两种方式给她赋值:
1:声明变量的时候直接赋值
2:如果在构造方法中赋值,无论有多少个构造方法,都要完成初始化工作
对于加static 和 final 的语句,我们就只有一种赋值方式:声明变量的时候直接赋值
看完之后有问题记得留言哦